Adaptive Color Transformation in Video Coding and Decoding

By applying a deblocking filter on the boundary of the video unit and managing motion vectors based on the adaptive color transformation mode and the use of block differential pulse codec modulation tools, the problem of difficult balance of compression ratio and complexity in the prior art is solved, and more efficient video codec performance is achieved.

CN114902657BActive Publication Date: 2025-06-13DOUYIN CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202080091436.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-12-31
Filing Date
2020-12-29
Publication Date
2025-06-13
Estimated Expiration
2040-12-29

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies are difficult to find a balance between compression ratio and complexity, and motion vector management is low efficiency.

Method used

A method of managing motion vectors is proposed to determine whether to enable these tools by applying de-blocking filters on the boundaries of video units and based on the use of adaptive color transformation modes and block differential pulse codec modulation tools.

Benefits of technology

It improves the compression efficiency and complexity of video encoding and decoding, enhances the management ability of motion vectors, and thus improves the performance of video processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114902657B_ABST
    Figure CN114902657B_ABST
Patent Text Reader

Abstract

A video processing method includes: performing a conversion between a video unit of a video and a bitstream representation of the video, wherein the conversion includes applying a deblocking filter to at least some samples on a boundary of the video unit, wherein a deblocking quantization parameter (QP) value used in the deblocking filter is determined according to a rule, and wherein the rule specifies whether the deblocking QP value is equal to an inverse quantization QP value of the video unit is based on whether an adaptive color transform (ACT) mode is applied to the video unit.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - reference to related applications

[0002] In accordance with the provisions of the applicable Patent Law and / or the Paris Convention, this application timely claims the priority and benefits of International Patent Application No. PCT / CN2019 / 130851, filed on December 31, 2019. For all legal purposes, the entire disclosure of the foregoing application is incorporated herein by reference as part of the disclosure of this application. Technical field

[0003] This patent document relates to video coding and decoding technologies, devices, and systems. Background art

[0004] Currently, efforts are being made to improve the performance of current video codec technologies to provide better compression ratios or to provide video encoding and decoding schemes that allow for lower complexity or parallel implementation. Industry experts have recently proposed several new video coding and decoding tools, which are currently being tested to determine their effectiveness. Summary of the invention

[0005] Devices, systems, and methods related to digital video coding and decoding are described, and specifically, relate to the management of motion vectors. The methods described can be applied to existing video coding and decoding standards (e.g., High Efficiency Video Coding (HEVC) or Versatile Video Coding) and future video coding and decoding standards or video codecs.

[0006] In a representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between a video unit of a video and a bit - stream representation of the video, where the conversion includes applying a de - blocking filter to at least some samples on the boundaries of the video unit, where a de - blocking quantization parameter (QP) value used in the de - blocking filter is determined according to a rule, and where the rule specifies whether the de - blocking QP value is equal to the inverse quantization QP value of the video unit is based on whether an Adaptive Color Transform (ACT) mode is applied to the video unit.

[0007] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between a video unit of a video and a bit - stream representation of the video according to a rule, where the rule specifies that an Adaptive Color Transform (ACT) mode and a Block - based Delta Pulse Code Modulation (BDPCM) coding and decoding tool can be used to code and decode the video unit in a mutually exclusive manner.

[0008] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes: for the conversion between a video unit of a video and the bitstream representation of the video, determining whether to enable a block differential pulse codec modulation (BDPCM) codec tool for the video unit based on whether an adaptive color transform (ACT) mode is enabled for the video unit; and performing the conversion based on the determination.

[0009] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between a video unit and the bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that when a chrominance quantization parameter (QP) table is used to derive the parameters of the deblocking filter, each chrominance QP value is processed through the chrominance QP table.

[0010] In another representative aspect, the disclosed technology can be used to provide another method for video processing. The method includes performing a conversion between a video unit and the bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, wherein the chrominance QP offset is at the picture / slice / tile / sub-picture level.

[0011] In another representative aspect, the disclosed technology can be used to provide another method for video processing. The method includes performing a conversion between a video unit and the bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, wherein information related to the same luma codec unit is used in the deblocking filter and is used to derive the chrominance QP offset.

[0012] In another representative aspect, the disclosed technology can be used to provide another method for video processing. The method includes performing a conversion between a video unit and the bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, wherein an indication signaling the enabling of the use of the chrominance QP offset is signaled in the bitstream representation.

[0013] In another representative aspect, the disclosed technology can be used to provide another video processing method. The method includes performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and the chrominance QP offset used in the deblocking filter is the same whether a JCCR codec method is applied at the boundary of the video unit or a method different from the JCCR codec method is applied at the boundary of the video unit.

[0014] In another representative aspect, the disclosed technology can be used to provide another video processing method. The method includes performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and the boundary strength (BS) of the deblocking filter is calculated without comparing the reference picture and / or multiple motion vectors (MVs) associated with the video unit at the P-side boundary with the reference picture of the video unit at the Q-side boundary.

[0015] In another exemplary aspect, another video processing method is disclosed. The method includes: for the conversion between a video unit of a component of a video and a bitstream representation of the video, determining the size of a quantization group of the video unit based on a constraint rule specifying that the size must be greater than K, where K is a positive number; and performing the conversion based on the determination.

[0016] Furthermore, in a representative aspect, a device in a video system is disclosed, including a processor and a non-transitory memory having instructions thereon. The instructions executed by the processor cause the processor to implement any one or more of the disclosed methods.

[0017] Additionally, in a representative aspect, a video decoding device includes a processor configured to implement any one or more of the disclosed methods.

[0018] In another representative aspect, a video encoding device includes a processor configured to implement any one or more of the disclosed methods.

[0019] Moreover, a computer program product stored on a non-transitory computer-readable medium is disclosed, the computer program product including program code for performing any one or more of the disclosed methods.

[0020] The above and other aspects and features of the disclosed technology are described in more detail in the drawings, the specification, and the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0021] Figure 1Shows an example of the overall processing flow of the block-based deblocking filtering process.

[0022] Figure 2 Shows an example of the flowchart of Bs calculation.

[0023] Figure 3 Shows an example of the reference information for Bs calculation at the CTU boundary.

[0024] Figure 4 Shows an example of pixels involving filter on / off decision and strong / weak filter selection.

[0025] Figure 5 Shows an example of the overall processing flow of the deblocking filtering process in VVC.

[0026] Figure 6 Shows an example of the luma deblocking filtering process in VVC.

[0027] Figure 7 Shows an example of the chroma deblocking filtering process in VVC

[0028] Figure 8 Shows an example of the determination of the filter length for the sub-PU boundary.

[0029] Figure 9A and Figure 9B Shows an example of the center position of the chroma block.

[0030] Figure 10 Shows an example of the blocks on the P side and the Q side.

[0031] Figure 11 Shows an example of the use of the decoded information of the luma block.

[0032] Figure 12 Is a block diagram of an example of a hardware platform for implementing the visual media decoding or visual media encoding techniques described in this document.

[0033] Figure 13 Shows a flowchart of an example method for video coding and decoding.

[0034] Figure 14A Shows an example of the placement of CC-ALF relative to other loop filters.

[0035] Figure 14B Shows an example of the placement of CC-ALF relative to the diamond filter.

[0036] Figure 15 Shows an example flowchart of the adaptive color transform (ACT) process.

[0037] Figure 16Shows an example flowchart of an advanced deblocking control mechanism.

[0038] Figure 17 Shows an example flowchart of an advanced deblocking control mechanism.

[0039] Figure 18 Is a block diagram illustrating a video coding / decoding system according to some embodiments of the present disclosure.

[0040] Figure 19 Is a block diagram illustrating an encoder according to some embodiments of the present disclosure.

[0041] Figure 20 Is a block diagram illustrating a decoder according to some embodiments of the present disclosure.

[0042] Figure 21 Is a block diagram of an example video processing system in which the disclosed technology can be implemented.

[0043] Figures 22 - 24 Is a flowchart of an example method of video processing. Detailed implementation

[0044] 1. Video coding of HEVC / H.265

[0045] Video coding / decoding standards have evolved mainly through the development of well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, ISO / IEC developed MPEG-1 and MPEG-4 Visual, and the two organizations jointly developed H.262 / MPEG-2 video and H.264 / MPEG-4 Advanced Video Coding (AVC) and H.265 / HEVC standards. Since H.262, video coding / decoding standards have been based on a hybrid video coding / decoding structure, in which temporal prediction plus transform coding is utilized. To explore future video coding / decoding technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and incorporated them into a reference software called the Joint Exploration Model (JEM). In April 2018, VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) established the Joint Video Experts Team (JVET) to work on the VVC standard with the goal of reducing the bit rate by 50% compared to HEVC.

[0046] The latest version of the VVC draft, namely the Versatile Video Coding (Draft 6), can be found at the following URL: http: / / phenix.it-sudparis.eu / jvet / doc_end_user / documents / 15_Gothenburg / wg11 / JVET-O2001-v14.zip. The latest reference software for VVC is called VTM and can be found at the following URL: https: / / vcgit.hhi.fraunhofer.de / jvet / VVCSoftware_VTM / tags / VTM-6.0.

[0047] 2.1. Deblocking Scheme of HEVC

[0048] The deblocking filtering process is performed on each CU in the same order as the decoding process. First, the vertical edges are filtered (horizontal filtering), and then the horizontal edges are filtered (vertical filtering). For the luminance and chrominance components, filtering is applied to determine the 8×8 block boundaries to be filtered. To reduce complexity, the 4×4 block boundaries are not processed.

[0049] Figure 1 The overall processing flow of the deblocking filtering process is illustrated. The boundary can have three filtering states: no filtering, weak filtering, and strong filtering. Each filtering decision is based on the boundary strength Bs and the thresholds β and t C 。

[0050] Three types of boundaries may be involved in the filtering process: CU boundary, TU boundary, and PU boundary. The CU boundary, which is the outer edge of the CU, always participates in the filtering because the CU boundary is always also a TU boundary or a PU boundary. When the PU shape is 2NxN (N>4) and the RQT depth is equal to 1, the TU boundary at the 8×8 block grid and the PU boundary between each PU inside the CU participate in the filtering. An exception is that when the PU boundary is inside the TU, the boundary is not filtered.

[0051] 2.1.1. Boundary Strength Calculation

[0052] Generally speaking, the boundary strength (Bs) reflects how strong the filtering of the boundary is required. If Bs is large, strong filtering should be considered.

[0053] Let P and Q be defined as the blocks participating in the filtering, where P represents the block located on the left side (in the case of a vertical edge) or above (in the case of a horizontal edge) of the boundary, and Q represents the block located on the right side (in the case of a vertical edge) or below (in the case of a horizontal edge) of the boundary. Figure 2 The figure illustrates how to calculate the Bs value based on the intra-frame coding mode, the presence of non-zero transform coefficients and motion information, the reference picture, the number of motion vectors, and the motion vector difference.

[0054] Bs is calculated on the basis of 4x4 blocks, but it is remapped to an 8x8 grid. The maximum of the two values of Bs corresponding to 8 pixels that form a line in the 4×4 grid is selected as the Bs for the boundary in the 8×8 grid.

[0055] To reduce the line buffer memory requirement, for only the CTU boundary, as Figure 3 shown, the information in every other block (4×4 grid) on the left or above is reused.

[0056] 2.1.2. β and t C Decision

[0057] Based on the luminance quantization parameter QP of the P block and the Q block respectively P and QP Q Derive the thresholds β and t C , the thresholds β and t C Involve filter on / off decision, strong and weak filter selection, and weak filtering process. The Q used to derive β and t C is calculated as follows.

[0058] Q = ((QP P + QP Q + 1) >> 1).

[0059] As shown in Table 1, the variable β is derived based on Q. If Bs is greater than 1, the variable t C is specified as Table 1 with Clip3(0, 55, Q + 2) as the input. Otherwise (Bs is equal to or less than 1), the variable t C is specified as Table 1 with Q as the input.

[0060] Table 1 Threshold variables β and t derived from the input Q C

[0061] Q 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 β 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 7 8 <![CDATA[t C > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 Q 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 β 9 10 11 12 13 14 15 16 17 18 20 22 24 26 28 30 32 34 36 <![CDATA[t C > 1 1 1 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 Q 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 β 38 40 42 44 46 48 50 52 54 56 58 60 62 64 64 64 64 64 <![CDATA[t C > 5 5 6 6 7 8 9 9 10 10 11 11 12 12 13 13 14 14

[0062] 2.1.3. Filter on / off decision for four lines

[0063] Make the filter on / off decision with four lines as a unit. Figure 4 The figure shows the pixels involved in the filter on / off decision. The 6 pixels in the two red boxes of the first four lines are used to determine the filter on / off of the first four lines. The 6 pixels in the two red boxes of the last four lines are used to determine the filter on / off of the last four lines.

[0064] If dp0 + dq0 + dp3 + dq3 < β, turn on the filtering for the first four lines and apply the strong / weak filter selection process. The derivation of each variable is as follows.

[0065] dp0 = |p 2,0 – 2*p1,0 +p 0,0 |, dp3 = |p 2,3 –2*p 1,3 +p 0,3 |, dp4 = |p 2,4 –2*p 1,4 +p 0,4 |, dp7 = |p 2,7 –2*p 1,7 +p 0,7 |

[0066] dq0 = |q 2,0 –2*q 1,0 +q 0,0 |, dq3 = |q 2,3 –2*q 1,3 +q 0,3 |, dq4 = |q 2,4 –2*q 1,4 +q 0,4 |, dq7 = |q 2,7 –2*q 1,7 +q 0,7 |

[0067] If the conditions are not met, the first four lines are not filtered. Additionally, if the conditions are met, dE, dEp1, and dEp2 are derived for the weak filtering process. The variable dE is set to be equal to 1. If dp0 + dp3 < (β + (β >> 1)) >> 3, the variable dEp1 is set to be equal to 1. If dq0 + dq3 < (β + (β >> 1)) >> 3, the variable dEq1 is set to be equal to 1.

[0068] For the last four lines, the decision is made in the same way as above.

[0069] 2.1.4. Strong / Weak Filter Selection for Four Lines

[0070] After determining that the first four lines are filtered on in the filter on / off decision, if the following two conditions are met, the first four lines are filtered using the strong filter. Otherwise, the weak filter is used for filtering. The pixels involved are the same as those Figure 4 shown for the filter on / off decision.

[0071] 1) 2*(dp0 + dq0) < (β >> 2), |p3 0 –p0 0 | + |q0 0 –q3 0 | < (β >> 3) and |p0 0 –q0 0 | < (5*t C + 1) >> 1

[0072] 2) 2 * (dp3 + dq3) < (β >> 2), |p3 3 –p0 3 | + |q0 3 –q3 3 | < (β >> 3) and |p0 3 –q0 3 | < (5 * t C + 1) >> 1

[0073] Similarly, if the following two conditions are met, a strong filter is used to filter the last four lines. Otherwise, a weak filter is used for filtering.

[0074] 1) 2 * (dp4 + dq4) < (β >> 2), |p3 4 –p0 4 | + |q0 4 –q3 4 | < (β >> 3) and |p0 4 –q0 4 | < (5 * t C + 1) >> 1

[0075] 2) 2 * (dp7 + dq7) < (β >> 2), |p3 7 –p0 7 | + |q0 7 –q3 7 | < (β >> 3) and |p0 7 –q0 7 | < (5 * t C + 1) >> 1

[0076] 2.1.4.1. Strong Filtering

[0077] For strong filtering, the filtered pixel values are obtained through the following equations. It should be noted that four pixels are used as inputs for each P block and Q block to modify three pixels.

[0078] p 0 ’ = (p2 + 2 * p 1 + 2 * p 0 + 2 * q 0 + q 1 + 4) >> 3

[0079] q 0 ’ = (p 1 + 2 * p 0 + 2 * q 0 + 2 * q 1 + q 2 + 4) >> 3

[0080] p1 ’ = (p 2 + p 1 + p 0 + q 0 + 2) >> 2

[0081] q 1 ’ = (p 0 + q 0 + q 1 + q 2 + 2) >> 2

[0082] p 2 ’ = (2 * p 3 + 3 * p 2 + p 1 + p 0 + q 0 + 4) >> 3

[0083] q 2 ’ = (p 0 + q 0 + q 1 + 3 * q 2 + 2 * q 3 + 4) >> 3

[0084] 2.1.4.2. Weak filtering

[0085] Define Δ as follows.

[0086] Δ = (9 * (q 0 – p0) – 3 * (q 1 – p 1 ) + 8) >> 4

[0087] When abs(Δ) is less than t C * 10

[0088] Δ = Clip3(-t C , t C , Δ)

[0089] p 0 ’ = Clip1 Y (p 0 + Δ)

[0090] q 0 ’ = Clip1 Y (q 0 - Δ)

[0091] If dEp1 equals 1,

[0092] Δp = Clip3(-(t C >> 1), t C >> 1, (((p2 +p 0 ((p + 1) >> 1) – p 1 ((p + Δ) >> 1)

[0093] p 1 ’ = Clip1 Y (p 1 + Δp)

[0094] If dEq1 equals 1,

[0095] Δq = Clip3(-(t C >> 1), t C >> 1, ((((q 2 + q 0 + 1) >> 1) – q 1 – Δ) >> 1)

[0096] q 1 ’ = Clip1 Y (q 1 + Δq)

[0097] It should be noted that up to two pixels are modified by using three pixels as the input for each P - block and Q - block respectively.

[0098] 2.1.4.3. Chroma Filtering

[0099] The Bs of chroma filtering inherit from luma. If Bs > 1 or if there are coding / decoding chroma coefficients, chroma filtering is performed. There are no other filtering decisions. And only one filter is applied to chroma. The filter selection process for chroma is not used. The derived filtered sample values p 0 ’ and q 0 ’ are as follows.

[0100] Δ = Clip3(-t C , t C , ((((q 0 – p 0 ) << 2) + p 1 – q 1 + 4) >> 3))

[0101] p 0 ’ = Clip1 C (p 0 + Δ)

[0102] q 0 ’ = Clip1 C (q 0 - Δ)

[0103] 2.2 Deblocking Scheme in VVC

[0104] In VTM6, the deblocking filtering process is basically the same as that in HEVC. However, the following modifications are added.

[0105] a) The filter strength of the deblocking filter depends on the average luminance level of the reconstructed samples.

[0106] b) Deblocking t C Table extension and adaptation to 10-bit video

[0107] c) Deblocking for 4x4 grid of luma

[0108] d) Stronger deblocking filter for luma

[0109] e) Stronger deblocking filter for chroma

[0110] f) Deblocking filter for sub-block boundaries

[0111] g) Deblocking decision adapting to smaller motion differences

[0112] Figure 5 Depicts the flowchart of deblocking filter processing in VVC for a coding unit.

[0113] 2.2.1. Filter strength depends on the reconstructed average luminance

[0114] In HEVC, the filter strength of the deblocking filter is controlled by variables β and t derived from the average quantization parameter qP L In VTM6, if the SPS flag of this method is true, the deblocking filter controls the filter strength by adding an offset to qP according to the luminance level of the reconstructed samples. The derivation of the reconstructed luminance level LL is as follows: C In VTM6, if the SPS flag of this method is true, the deblocking filter controls the filter strength by adding an offset to qP according to the luminance level of the reconstructed samples. The derivation of the reconstructed luminance level LL is as follows: L LL = ((p

[0115] LL = ((p 0,0 + p 0,3 + q 0,0 + q 0,3 ) >> 2) / (1 << bitDepth) (3-1)

[0116] where the derivation of the sample values p i,k and q i,k is shown in Section 2, where i = 0…3 and k = 0 and 3. Then LL is used to determine the offset qpOffset based on the threshold signaled in the SPS. After that, qP L (derived as follows) is used to derive β and t C .

[0117] qP L = ((Qp Q + QpP +1)>>1)+qpOffset (3 - 2)

[0118] Where Qp Q and Qp P respectively represent the quantization parameters of the coding and decoding units containing the sample points q 0,0 and p 0,0 In the current VVC, this method is only applied to the luma deblocking process.

[0119] 2.2.2. Luma 4x4 Deblocking Grid

[0120] HEVC uses an 8×8 deblocking grid for both luma and chroma. In VTM6, a 4x4 grid deblocking for luma boundaries was introduced to handle the blocking effects from rectangular transform shapes. The parallel-friendly luma deblocking on the 4×4 grid is achieved by limiting the number of samples to be deblocked to 1 sample on each side of the vertical luma boundary (where one side has a width of 4 or less) or 1 sample on each side of the horizontal luma boundary (where one side has a height of 4 or less).

[0121] 2.2.3. Luma Boundary Strength Derivation

[0122] The detailed boundary strength derivation is shown in Table 2. Check the conditions in Table 2 in order.

[0123] Table 2 Boundary Strength Derivation

[0124]

[0125]

[0126]

[0127] 2.2.4. Stronger Deblocking Filter for Luma

[0128] When the samples on either side of the boundary belong to large blocks, the proposal uses a bilinear filter. Samples are defined as belonging to large blocks when the width of the vertical edge >= 32 and the height of the horizontal edge >= 32.

[0129] The bilinear filter is as follows.

[0130] Then, the block boundary samples pi for i = 0 to Sp - 1 and the block boundary samples qi for j = 0 to Sq - 1 (pi and qi follow the definitions in the above HEVC deblocking) are replaced by linear interpolation as follows:

[0131] –p i ′=(f i *Middle s,t +(64 - f i )*Ps +32) >> 6), clipped to p i ±tcPD i

[0132] –q j ′ = (g j *Middle s,t +(64 - g j )*Q s +32 >> 6), clipped to q j ±tcPD j

[0133] Among them, the terms tcPD i and tcPD j are position - related clippings described in Section 2.2.5. The following gives g j 、f i 、Middle s,t 、P s and Q s :

[0134]

[0135]

[0136]

[0137] 2.2.5. Deblocking Control for Luminance

[0138] The deblocking decision process is described in this subsection.

[0139] A wider and stronger luminance filter is used only when Conditions 1, 2, and 3 are all TRUE.

[0140] Condition 1 is the "large block condition". This condition detects whether the samples on the P side and the Q side belong to large blocks, represented by the variables bSidePisLargeBlk and bSideQisLargeBlk respectively. The definitions of bSidePisLargeBlk and bSideQisLargeBlk are as follows.

[0141] bSidePisLargeBlk = ((The edge type is vertical and p 0 belongs to a CU with a width >= 32) || (The edge type is horizontal and p 0 belongs to a CU with a height >= 32))? TRUE : FALSE

[0142] bSideQisLargeBlk = ((The edge type is vertical and q 0Belonging to a CU with width >= 32) || (edge type is horizontal and q 0 Belonging to a CU with height >= 32))? TRUE : FALSE

[0143] Based on bSidePisLargeBlk and bSideQisLargeBlk, Condition 1 is defined as follows.

[0144] Condition 1 = (bsidepislageblk || bsidepislageblk)? TRUE : FALSE

[0145] Next, if Condition 1 is true, then Condition 2 will be further checked. First, the following variables are derived:

[0146] First, dp0, dp3, dq0, dq3 are derived as in HEVC

[0147] If (the p side is greater than or equal to 32)

[0148] dp0 = (dp0 + Abs(p 5,0 - 2 * p 4,0 + p 3,0 ) + 1) >> 1

[0149] dp3 = (dp3 + Abs(p 5,3 - 2 * p 4,3 + p 3,3 ) + 1) >> 1

[0150] if (the q side is greater than or equal to 32)

[0151] dq0 = (dq0 + Abs(q 5,0 - 2 * q 4,0 + q 3,0 ) + 1) >> 1

[0152] dq3 = (dq3 + Abs(q 5,3 - 2 * q 4,3 + q 3,3 ) + 1) >> 1

[0153] Then dpq0, dpq3, dp, dq, d are derived as in HEVC.

[0154] Then Condition 2 is defined as follows.

[0155] Condition2 = (d < β)? TRUE : FALSE

[0156] where d = dp0 + dq0 + dp3 + dq3, as shown in Section 2.1.4.

[0157] If Condition 1 and Condition 2 are valid, check if any block uses sub-blocks:

[0158]

[0159] Finally, if both Condition 1 and Condition 2 are valid, the proposed de-blocking method will check Condition 3 (the large block strong filtering condition), which is defined as follows.

[0160] In Condition 3 StrongFilterCondition, the following variables are derived:

[0161] dpq is derived as in HEVC.

[0162] sp3 = Abs(p3 - p0), derived as in HEVC

[0163]

[0164] sq3 = Abs(q0 - q3), derived as in HEVC

[0165]

[0166]

[0167] Derived as in HEVC, StrongFilterCondition = (dpq is less than (β >> 2), sp3 + sq3 is less than (3 * β >> 5), and Abs(p0 - q0) is less than (5 * tC + 1) >> 1)? TRUE : FALSE Figure 6 The flowchart of the luma de-blocking filtering process is described.

[0168] 2.2.6. Strong Deblocking Filter for Chrominance

[0169] The following strong de-blocking filter for chrominance is defined:

[0170] p 2 ′ = (3 * p 3 + 2 * p 2 + p 1 + p 0 + q 0 + 4) >> 3

[0171] p 1 ′ = (2 * p 3 + p 2 + 2 * p 1 + p 0 + q 0+q 1 (+4) >> 3

[0172] p 0 p' = (p 3 + p 2 + p 1 + 2 * p 0 + q 0 + q 1 + q 2 (+4) >> 3

[0173] The proposed chrominance filter performs deblocking on a 4×4 chrominance sample grid.

[0174] 2.2.7. Chrominance Deblocking Control

[0175] The above chrominance filter performs deblocking on an 8×8 chrominance sample grid. A chrominance strong filter is used on both sides of the block boundary. Here, when both sides of the chrominance edge are greater than or equal to 8 (in chrominance samples), the chrominance filter is selected and a decision with the following three conditions is satisfied. The first is for determining the boundary strength and large blocks. The second and third are basically the same as the HEVC luminance decisions, which are the on / off decision and the strong filtering decision, respectively.

[0176] Figure 7 A flowchart depicting the chrominance deblocking filtering process is shown.

[0177] 2.2.8. Position-Dependent Clipping

[0178] The proposal also introduces position-dependent clipping tcPD, which is applied to the output samples of the luminance filtering process that involves modifying the strong and long filters for 7, 5, and 3 samples at the boundary. Assuming a quantization error distribution, it is proposed to increase the clipping value for samples expected to have a higher quantization noise, thus expecting a larger deviation between the reconstructed sample value and the true sample value.

[0179] For each P boundary or Q boundary filtered with the proposed asymmetric filter, according to the result of the decision process described in Section 2.2, a position-dependent threshold table is selected from the Tc7 and Tc3 tables, which are provided to the decoder as side information:

[0180] Tc7 = {6, 5, 4, 3, 2, 1, 1};

[0181] Tc3 = {6, 4, 2};

[0182] tcPD = (SP == 3)? Tc3 : Tc7;

[0183] tcQD = (SQ == 3)? Tc3 : Tc7;

[0184] For the P or Q boundary filtered with a short symmetric filter, apply a lower magnitude position-dependent threshold:

[0185] Tc3 = {3, 2, 1};

[0186] After defining the threshold, clip the filtered p'i and q'i sample values according to the tcP and tcQ clipping values:

[0187] p” i = clip3(p’ i + tcP i , p’ i – tcP i , p’ i );

[0188] q” j = clip3(q’ j + tcQ j , q’ j – tcQ j , q’ j );

[0189] where p’ i and q’ j are the filtered sample values, p” i and q” j are the clipped output sample values, and tcP i and tcQ j are the clipping thresholds derived from the VVC tc parameters and tcPD and tcQD. The term clip3 is the clipping function as defined in VVC.

[0190] 2.2.9. Sub-block Deblocking Adjustment

[0191] To achieve parallel-friendly deblocking using both long filters and sub-block deblocking, the long filter is restricted to modifying at most 5 samples on the side where sub-block deblocking (AFFINE or ATMVP) is used, as shown in the luminance control of the long filter. Additionally, adjust the sub-block deblocking such that the sub-block boundaries on the 8×8 grid near the CU or implicit TU boundary are restricted to modifying at most 2 samples on each side.

[0192] The following applies to sub-block boundaries not aligned with the CU boundary.

[0193]

[0194]

[0195] The edges equal to 0 correspond to the CU boundary, and the edges equal to 2 or equal to orthogonalLength - 2 correspond to the sub - block boundaries 8 samples away from the CU boundary, etc. If the implicit partitioning of the TU is used, then the implicit TU is true. Figure 8 A flowchart showing the determination process of the TU boundary and the sub - PU boundary.

[0196] When the horizontal boundary aligns with the CTU boundary, the filtering limits for the horizontal boundary are Sp = 3 for luminance, and Sp = 1 and Sq = 1 for chrominance.

[0197] 2.2.10. Deblocking Decision for Adapting to Smaller Motion Differences

[0198] When the difference of at least one motion vector component between the blocks on the corresponding side is equal to or greater than the threshold of 1 sample, HEVC enables deblocking of the prediction unit boundary. In VTM6, a threshold for half - luminance samples is introduced to be able to eliminate the blocking artifacts at the boundaries between inter - prediction units with smaller motion vector differences.

[0199] 2.3. Combined Inter - and Intra - Prediction (CIIP)

[0200] In VTM6, when a CU is encoded / decoded in merge mode, if the CU contains at least 64 luminance samples (i.e., the CU width times the CU height is equal to or greater than 64), and if both the CU width and the CU height are less than 128 luminance samples, an additional flag is signaled to indicate whether the current CU applies the Combined Inter - frame / Intra - frame Prediction (CIIP) mode. As the name implies, CIIP predicts by combining the inter - prediction signal and the intra - prediction signal. The same inter - prediction process applied to the regular merge mode is used to derive the inter - prediction signal P inter in CIIP intra ; and the intra - prediction signal is derived after the regular intra - prediction process using the planar mode. Then, weighted average is used to combine the intra - and inter - prediction signals, where the weight values are calculated according to the encoding / decoding modes of the top and left neighboring blocks as follows:

[0201] – If the top neighbor is available and is intra - frame encoded, set isIntraTop to 1, otherwise set isIntraTop to 0;

[0202] – If the left neighbor is available and is intra - frame encoded, set isIntraLeft to 1, otherwise set isIntraLeft to 0;

[0203] – If (isIntraLeft + isIntraLeft) equals 2, set wt to 3;

[0204] – Otherwise, if (isIntraLeft + isIntraLeft) equals 1, set wt to 2;

[0205] – Otherwise, set wt to 1.

[0206] The CIIP prediction is formed as follows:

[0207] P CIIP = ((4 - wt) * P inter + wt * P intra + 2) >> 2

[0208] 2.4. VTM Chrominance QP Table Design - 6.0

[0209] The chrominance QP table design proposed in JVET - O0650 is adopted by VVC. It proposes a signaling mechanism for the chrominance QP table, which enables the opportunity to flexibly optimize the table for SDR and HDR content to the encoder. It supports signaling the table for the Cb and Cr components separately. The proposed mechanism signals the chrominance QP table as a piece - wise linear function.

[0210] 2.5. Transform Skip (TS)

[0211] As in HEVC, the residual of a block can be coded and decoded in the transform skip mode. To avoid redundancy in syntax coding and decoding, when the MTS_CU_flag at the CU level is not equal to zero, the transform skip flag is not signaled. The block size limit for transform skip is the same as that of MTS in JEM4, which means that transform skip is applicable to a CU when both the block width and height are equal to or less than 32. Note that when LFNST or MIP is activated for the current CU, the implicit MTS transform is set to DCT2. In addition, when MTS is enabled for an inter - coded block, the implicit MTS can still be enabled.

[0212] In addition, for transform skip blocks, the minimum allowed quantization parameter (QP) is defined as 6 * (internalBitDepth – inputBitDepth) + 4.

[0213] 2.6. Joint Coding of Chrominance Residuals (JCCR)

[0214] VVC Draft 6 supports the mode where chrominance residuals are jointly coded. The use (activation) of the joint chrominance coding mode is indicated by the TU-level flag tu_joint_cbcr_residual_flag, and the selected mode is implicitly indicated by the chrominance CBF. If one or both of the chrominance CBFs of a TU are equal to 1, the flag tu_joint_cbcr_residual_flag exists. In the PPS and slice headers, chrominance QP offset values are signaled for the joint chrominance residual coding mode, which are different from the normal chrominance QP offset values signaled for the conventional chrominance residual coding mode. These chrominance QP offset values are used to derive the chrominance QP values of those blocks coded using the joint chrominance residual coding mode. When the corresponding joint chrominance coding mode (Mode 2 in Table 3) is activated in a TU, during quantization and decoding of that TU, this chrominance QP offset is added to the applied luminance-derived chrominance QP. For other modes (Mode 1 and Mode 3 in Table 3), the chrominance QP is derived in the same way as the traditional Cb or Cr modules. Table 3 describes the process of reconstructing chrominance residuals (resCb and resCr) from the sent transform blocks. When this mode is activated, a single joint chrominance residual block (resJointC[x][y] in Table 3) is signaled, and the Cb residual block (resCb) and Cr residual block (resCr) are derived based on information such as tu_cbf_cb, tu_cbf_cr, and the sign value CSign specified in the slice header.

[0215] On the encoder side, the joint chrominance components are derived as described below. Depending on the mode (listed in the above table), the encoder generates resJointC{1,2} as follows:

[0216] · If the mode is equal to 2 (with a single reconstructed residual Cb = C, Cr = CSign*C), the joint residual is determined by

[0217] resJointC[x][y] = (resCb[x][y] + CSign*resCr[x][y]) / 2.

[0218] · Otherwise, if the mode is equal to 1 (with a single reconstructed residual Cb = C, Cr = (CSign*C) / 2), the joint residual is determined by

[0219] resJointC[x][y] = (4*resCb[x][y] + 2*CSign*resCr[x][y]) / 5.

[0220] · Otherwise (the mode is equal to 3, i.e., a single residual, reconstructed Cr = C, Cb = (CSign*C) / 2), the joint residual is determined by

[0221] resJointC[x][y] = (4 * resCr[x][y] + 2 * CSign * resCb[x][y]) / 5。

[0222] Table 3 Reconstruction of chroma residuals. The value CSign is a sign value (+1 or –1), specified in the slice header, and resJointC[][] is the residual sent.

[0223]

[0224] The above three modes use different QPs. For mode 2, the QP offset signaled in the PPS for JCCR coded blocks is applied, while for the other two modes, this offset is not applied, but instead the QP offset signaled in the PPS for non-JCCR coded blocks is applied.

[0225] The corresponding specifications are as follows:

[0226] 8.7.1 Derivation process of quantization parameter

[0227] Variable Qp Y is derived as follows:

[0228] Qp Y = ((qP Y_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffset Y ) % (64 + QpBdOffset Y )) - QpBdOffset Y (8 - 933)

[0229] Luminance quantization parameter Qp' Y is derived as follows:

[0230] Qp′ Y = Qp Y + QpBdOffset Y (8 - 934)

[0231] When ChromaArrayType is not equal to 0 and treeType is equal to SINGLE_TREE or DUAL_TREE_CHROMA, the following applies:

[0232] – When treeType is equal to DUAL_TREE_CHROMA, the variable Qp Y is set to the luminance quantization parameter Qp of the luminance coding / decoding unit covering the luminance position (xCb + cbWidth / 2, yCb + cbHeight / 2) Y .

[0233] – Variable qPCb , qP Cr and qP CbCr are derived as follows:

[0234] qPi Chroma = Clip3(-QpBdOffset C , 63, Qp Y ) (8 - 935)

[0235] qPi Cb = ChromaQpTable[0][qPi Chroma (8 - 936)

[0236] qPi Cr = ChromaQpTable[1][qPi Chroma (8 - 937)

[0237] qPi CbCr = ChromaQpTable[2][qPi Chroma (8 - 938)

[0238] – Chrominance quantization parameters for Cb and Cr components, Qp', Cb and Qp' Cr as well as jointly coded Qp' for Cb - Cr CbCr are derived as follows:

[0239] Qp′ Cb = Clip3(-QpBdOffset C , 63, qP Cb + pps_cb_qp_offset + slice_cb_qp_offset + CuQpOffset Cb ) + QpBdOffset C (8 - 939)

[0240] Qp′ Cr = Clip3(-QpBdOffset C , 63, qP Cr + pps_cr_qp_offset + slice_cr_qp_offset + CuQpOffset Cr ) + QpBdOffset C (8 - 940)

[0241] Qp′ CbCr = Clip3(-QpBdOffset C , 63, qP CbCr+pps_cbcr_qp_offset+slice_cbcr_qp_offset+CuQpOffset CbCr )+QpBdOffset C (8-941)

[0242] 8.7.3 Scaling Process of Transform Coefficients

[0243] The inputs to this process are as follows:

[0244] – The luminance position (xTbY, yTbY) of the top-left sample of the current luminance transform block relative to the top-left luminance sample of the current picture,

[0245] – The variable nTbW specifying the width of the transform block,

[0246] – The variable nTbH specifying the height of the transform block,

[0247] – The variable cIdx specifying the color component of the current block,

[0248] – The variable bitDepth specifying the bit depth of the current color component.

[0249] The output of this process is an (nTbW) x (nTbH) array d of scaled transform coefficients with elements d[x][y].

[0250] The derivation of the quantization parameter qP is as follows:

[0251] – If cIdx is equal to 0 and transform_skip_flag[xTbY][yTbY] is equal to 0, then the following applies:

[0252] qP = Qp′ Y (8-950)

[0253] – Otherwise, if cIdx is equal to 0 (and transform_skip_flag[xTbY][yTbY] is equal to 1), then the following applies:

[0254] qP = Max(QpPrimeTsMin, Qp′ Y ) (8-951)

[0255] – Otherwise, if TuCResMode[xTbY][yTbY] is equal to 2, then the following applies:

[0256] qP = Qp′ CbCr (8-952)

[0257] – Otherwise, if cIdx is equal to 1, then the following applies:

[0258] qP = Qp′ Cb (8-953)

[0259] – Otherwise (cIdx equals 2), use the following:

[0260] qP = Qp′ Cr (8-954)

[0261] 2.7. Cross-Component Adaptive Loop Filter (CC-ALF)

[0262] Figure 14A The placement of the CC-ALF relative to other loop filters is illustrated. The CC-ALF operates by applying a linear diamond filter ( Figure 14B ) to the luma channel of each chrominance component, where the chrominance components are represented as

[0263]

[0264] where

[0265] (x, y) is the chrominance component at the i-th position to be refined

[0266] (x C , y C ) is the luma position based on (x, y)

[0267] S i is the filter support for chrominance component i in luma

[0268] c i (x 0 , y 0 ) represents the filter parameters

[0269] The main features of the characteristics of the CC-ALF process include:

[0270] · The support region centered around its luma position (x C , y C ) is calculated based on the spatial scaling factor between the luma and chrominance planes.

[0271] · All filter coefficients are sent in the APS and have an 8-bit dynamic range.

[0272] · The APS can be referenced in the slice header.

[0273] · The CC-ALF coefficients for each chrominance component of a slice are also stored in a buffer corresponding to the temporal sublayer. Using the slice-level flag facilitates the reuse of these sets of temporal sublayer filter coefficients.

[0274] · The application of the CC-ALF filter is controlled by variable block sizes and signaled by context coding flags received for each sample block. For each chrominance component, the block size and the CC-ALF enable flag are received at the slice level.

[0275] · The boundary filling of horizontal virtual boundaries makes use of repetition. For the remaining boundaries, the same type of filling as in conventional ALF is used.

[0276] 2.8 Derivation process of quantization parameter

[0277] Derive the QP based on adjacent QPs and the QP increment for decoding. The text related to QP derivation in JVET-P2001-vE is as follows.

[0278] The inputs to this process are:

[0279] – Specify the luminance position (xCb, yCb) of the top-left luminance sample of the current coding / decoding block relative to the top-left luminance sample of the current picture.

[0280] – Specify the variable cbWidth that represents the width of the current coding / decoding block in luminance samples.

[0281] – Specify the variable cbHeight that represents the height of the current coding / decoding block in luminance samples.

[0282] – Specify the variable treeType that indicates whether to use a single tree (SINGLE_TREE) or a dual tree to partition the coding / decoding tree nodes, and when using a dual tree, whether the current process is for the luminance (DUAL_TREE_LUMA) or chrominance component (DUAL_TREE_CHROMA).

[0283] In this process, derive the luminance quantization parameter Qp’ Y and the chrominance quantization parameter Qp’ Cb 、Qp’ Cr and Qp’ CbCr .

[0284] The luminance position (xQg, yQg) specifies the top-left luminance sample of the current quantization group relative to the top-left luminance sample of the current picture. The horizontal and vertical positions xQg and yQg are respectively set to be equal to CuQgTopLeftX and CuQgTopLeftY.

[0285] Note –: The current quantization group is a rectangular area within a coding / decoding tree block that shares the same qPY_PRED. Its width and height are equal to the width and height of the coding / decoding tree node, and the top-left luminance sample position of the coding / decoding tree node is assigned to the variables CuQgTopLeftX and CuQgTopLeftY.

[0286] When treeType is equal to SINGLE_TREE or DUAL_TREE_LUMA, the predicted luma quantization parameter qPY_PRED is derived through the following ordered steps:

[0287] 1. The variable qPY_PREV is derived as follows:

[0288] – If one or more of the following conditions are true, then qPY_PREV is set to be equal to SliceQpY:

[0289] – The current quantization group is the first quantization group in the slice.

[0290] – The current quantization group is the first quantization group in the picture.

[0291] – The current quantization group is the first quantization group in the CTB row of the picture and entropy_coding_sync_enabled_flag is equal to 1.

[0292] – Otherwise, qPY_PREV is set to be equal to the luma quantization parameter QpY of the last luma coding unit of the previous quantization group in decoding order.

[0293] 2. Call the derivation process of adjacent block availability specified in Clause 6.4.4, set the position (xCurr, yCurr) to be equal to (xCb, yCb), the adjacent position (xNbY, yNbY) to be equal to (xQg - 1, yQg), checkPredModeY to be equal to FALSE, cIdx to be equal to 0 as inputs, and assign the output to availableA. The variable qPY_A is derived as follows:

[0294] – If one or more of the following conditions are true, then qPY_A is set to be equal to qPY_PREV:

[0295] – availableA is equal to FALSE.

[0296] – The CTB containing the luma codec block covering the luma position (xQg - 1, yQg) is not equal to the CTB containing the current luma codec block at (xCb, yCb), i.e., all of the following conditions are true:

[0297] – (xQg - 1) >> CtbLog2SizeY is not equal to (xCb) >> CtbLog2SizeY

[0298] – (yQg) >> CtbLog2SizeY is not equal to (yCb) >> CtbLog2SizeY

[0299] – Otherwise, qPY_A is set to be equal to the luma quantization parameter QpY of the coding unit containing the coded luma block covering (xQg-1, yQg).

[0300] 3. Call the neighboring block availability derivation process specified in Clause 6.4.4, set the position (xCurr, yCurr) to (xCb, yCb), the neighboring position (xNbY, yNbY) to (xQg, yQg 1), checkPredModeY to FALSE, and cIdx to 0 as inputs, and assign the output to availableB. The variable qPY_B is derived as follows:

[0301] – If one or more of the following conditions are true, then qPY_B is set to be equal to qPY_PREV:

[0302] – availableB is equal to FALSE.

[0303] – The CTB containing the coded luma block covering the luma position (xQg,yQg-1) is not equal to the CTB containing the current coded luma block at (xCb,yCb), i.e., all of the following conditions are true:

[0304] – (xQg) >> CtbLog2SizeY is not equal to (xCb) >> CtbLog2SizeY

[0305] – (yQg-1) >> CtbLog2SizeY is not equal to (yCb) >> CtbLog2SizeY

[0306] – Otherwise, qPY_B is set to be equal to the luma quantization parameter QpY of the coding unit containing the coded luma block covering (xQg,yQg-1).

[0307] 4. The predicted luma quantization parameter qPY_PRED is derived as follows:

[0308] – If all of the following conditions are true, then qPY_PRED is equal to the luma quantization parameter QpY of the coding unit containing the coded luma block covering (xQg,yQg-1):

[0309] – availableB is equal to TRUE.

[0310] – The current quantization group is the first quantization group of the CTB row in the slice.

[0311] – Otherwise, the derivation of qPY_PRED is as follows:

[0312] qPY_PRED = (qPY_A + qPY_B + 1) >> 1 (1115)

[0313] The derivation of the variable QpY is as follows:

[0314] QpY = ((qPY_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffset) % (64 + QpBdOffset)) – QpBdOffset (1116)

[0315] The derivation of the luma quantization parameter Qp’Y is as follows:

[0316] Qp′Y = QpY + QpBdOffset (1117)

[0317] When ChromaArrayType is not equal to 0 and treeType is equal to SINGLE_TREE or DUAL_TREE_CHROMA, the following applies:

[0318] – When treeType is equal to DUAL_TREE_CHROMA, the variable QpY is set to be equal to the luma quantization parameter QpY of the luma coding / decoding unit covering the luma position (xCb + cbWidth / 2, yCb + cbHeight / 2).

[0319] – The derivation of the variables qPCb, qPCr, and qPCbCr is as follows:

[0320] qPChroma = Clip3(-QpBdOffset, 63, QpY) (1118)

[0321] qPCb = ChromaQpTable[0][qPChroma] (1119)

[0322] qPCr = ChromaQpTable[1][qPChroma] (1120)

[0323] qPCbCr = ChromaQpTable[2][qPChroma] (1121)

[0324] – For the Cb and Cr components, Qp’ Cb and Qp’ Cr as well as the chroma quantization parameters of the joint Cb - Cr coding / decoding Qp’ CbCr are derived as follows:

[0325] Qp′Cb = Clip3(-QpBdOffset, 63, qPCb + pps_cb_qp_offset + slice_cb_qp_offset + CuQpOffsetCb) + QpBdOffset (1122)

[0326] Qp′Cr = Clip3(-QpBdOffset, 63, qPCr + pps_cr_qp_offset + slice_cr_qp_offset + CuQpOffsetCr) + QpBdOffset (1123)

[0327] Qp′CbCr = Clip3(-QpBdOffset, 63, qPCbCr + pps_joint_cbcr_qp_offset + slice_joint_cbcr_qp_offset + CuQpOffsetCbCr) + QpBdOffset (1124)

[0328] 2.9 Adaptive Color Transform (ACT)

[0329] Figure 15 The decoding flow chart for applying ACT is illustrated. As shown, the color space conversion is performed in the residual domain. Specifically, an additional decoding module, i.e., inverse ACT, is introduced after the inverse transform to convert the residual from the YCgCo domain back to the original domain.

[0330] In VVC, unless the maximum transform size is less than the width or height of a coding unit (CU), a CU leaf node is also used as the unit for transform processing. Therefore, in the proposed implementation, an ACT flag is signaled for a CU to select the color space for coding its residual. Additionally, according to the HEVC ACT design, for inter and IBC CUs, ACT is enabled only when there is at least one non - zero coefficient in the CU. For intra CUs, ACT is enabled only when the chrominance components select the same intra - prediction mode as the luminance component, i.e., the DM mode.

[0331] The core transform for color space conversion remains the same as that for HEVC. Specifically, the following forward and inverse YCgCo color transform matrices as described below are applied.

[0332]

[0333] Furthermore, to compensate for the dynamic range change of the residual signal before and after color transform, a QP adjustment of (-5, -5, -3) is applied to the transform residual.

[0334] On the other hand, as Figure 15 shown, the forward and inverse color transforms require access to the residuals of all three components. Accordingly, in the proposed implementation, ACT is disabled in the following two cases where not all residuals of the three components are available.

[0335] 1. Split-tree segmentation: When applying the split-tree, the luma and chroma samples within a CTU are segmented by different structures. This results in CUs in the luma tree containing only the luma component, while CUs in the chroma tree contain only the two chroma components.

[0336] Intra Sub-partition Prediction (ISP): ISP sub-partitioning is only applied to the luma signal, while the chroma signal is encoded and decoded without partitioning. In the current ISP design, except for the last ISP sub-partition, other sub-partitions contain only the luma component.

[0337] 2. High-level Deblocking Control in VVC Draft 7

[0338] The control mechanism is as follows Figure 16 shown.

[0339] 3. Disadvantages of Existing Implementations

[0340] DMVR and BIO do not involve the original signal during the refinement of motion vectors, which may lead to inaccurate motion information in the encoded and decoded blocks. In addition, DMVR and BIO sometimes adopt fractional motion vectors after motion refinement, while screen videos usually have integer motion vectors, which makes the current motion information more inaccurate and degrades the encoding and decoding performance.

[0341] 1. There may be problems with the interaction between the chroma QP table and chroma deblocking. For example, the chroma QP table should be applied to individual QPs rather than the weighted sum of QPs.

[0342] 2. The logic of the luma deblocking filtering process is complex for hardware design.

[0343] 3. The logic of boundary strength derivation is too complex for both software and hardware design.

[0344] 4. During the BS decision process, JCCR is processed separately from the encoded blocks that do not apply JCCT. However, JCCR is just a special residual encoding and decoding method. Therefore, this design may introduce additional complexity without obvious benefits.

[0345] 5. In chroma edge decision, Qp Q and Qp P are set to be equal to the Qp Y value of the encoded and decoded unit that includes samples q 0,0 and p 0,0encoding / decoding blocks. However, during the quantization / anti - quantization process, the QP of chrominance samples is derived from the QP of the luma block of the corresponding luma samples covering the center position of the current chrominance CU. When the dual - tree is enabled, different positions in the luma block may result in different QPs. Therefore, during the chrominance de - blocking process, an incorrect QP may be used for the filter decision. Such misalignment may lead to visual artifacts. In Figures 9A - 9B an example is shown, including Figures 9A - 9B . In Figures 9A - 9B , on the left ( Figure 9A ) is the corresponding CTB partition of the luma block, and on the right ( Figure 9B ) is the chrominance CTB partition under the dual - tree. When determining the QP of the chrominance block represented by CU c 1, first the center position of CU c 1 is derived. Then the corresponding luma samples at the center position of CU c 1 are identified and then the luma QP associated with the luma CU (i.e., CUY3) covering the corresponding luma samples is not used to derive the QP of CU c 1. However, when making the filter decision for the three depicted samples (solid circles), the QP of the CU covering the corresponding three samples is selected. Therefore, for the chrominance samples 1 st , 2 nd , and 3 rd (as shown in Figure 9B ), the QPs of CU Y 2, CU Y 3, and CU Y 4 are used respectively. That is, chrominance samples in the same CU may use different QPs for the filter decision, which may lead to incorrect decisions.

[0346] 6. Different picture - level QP offsets (i.e., pps_joint_cbcr_qp_offset) are applied to JCCR encoding blocks, which are different from the picture - level offsets for Cb / Cr applied to non - JCCR encoding blocks (e.g., pps_cb_qp_offset and pps_cr_qp_offset). However, during the chrominance de - blocking filter decision process, only those offsets for non - JCCR encoding blocks are utilized. Failure to consider the encoding / decoding mode may result in incorrect filter decisions.

[0347] 7. TS and non - TS encoding / decoding blocks use different QPs during the anti - quantization process, which can also be considered during the de - blocking process.

[0348] 8. For JCCR encoding / decoding blocks with different modes, different QPs are used during the scaling process (quantization / anti - quantization). Such a design is not consistent.

[0349] 9. Chroma deblocking of Cb / Cr may not be suitable for parallel design.

[0350] 10. The chroma QP in deblocking is derived based on the QP used in the chroma inverse quantization process (e.g., QP). However, when QP is used in the deblocking process, for TS and ACT blocks, QP should be clipped or subtracted by 5.

[0351] 11. When both BDPCM and ACT are enabled, the prediction processes for the three components may be different.

[0352] 4. Example techniques and embodiments

[0353] The detailed embodiments described below should be considered as examples explaining the general concepts. These embodiments should not be interpreted narrowly. In addition, these embodiments can be combined in any way.

[0354] The proposed methods described below can be applied to the deblocking filter. Alternatively, they can be applied to other types of loop filters, e.g., those that rely on quantization parameters.

[0355] In addition to DMVR and BIO mentioned below, the methods described below can also be applicable to other decoder motion information derivation techniques.

[0356] In the following examples, MVM[i].x and MVM[i].y represent the horizontal and vertical components of the motion vector in reference picture list i (i is 0 or 1) of the block on side M (M is P or Q). Abs represents the operation of obtaining the absolute value of the input, while "&&" and "||" represent the logical operations AND and OR. Refer to Figure 10 , P can represent the samples on the P side, and Q can represent the samples on the Q side. The blocks on the P side and the Q side can represent the blocks marked by the dotted lines.

[0357] Regarding the Chroma QP in Deblocking

[0358] 1. When the chroma QP table is used to derive the parameters for controlling chroma deblocking (e.g., in the decision process at the chroma block edge), the chroma QP offset can be applied after applying the chroma QP table.

[0359] a. In one example, the chroma QP offset can be added to the value output by the chroma QP table.

[0360] b. Alternatively, the chroma QP offset may not be considered as an input to the chroma QP table.

[0361] c. In one example, the chrominance QP offset can be a picture-level or other video unit-level (slice / strip / tile / sub-picture) chrominance quantization parameter offset (e.g., pps_cb_qp_offset, pps_cr_qp_offset in the specification).

[0362] 2. QP clipping may not be applicable to the input of the chrominance QP table.

[0363] 3. It is proposed that the deblocking process for the chrominance component can be based on the mapped chrominance QP (through the chrominance QP table) on each side.

[0364] a. In one example, it is proposed that the deblocking parameters for chrominance (e.g., β and t C ) can be based on the QP derived from the luma QP on each side.

[0365] b. In one example, the chrominance deblocking parameters can depend on the chrominance QP table values, where QpP is used as the table index and QpP is the luma QP value on the P side.

[0366] c. In one example, the chrominance deblocking parameters can depend on the chrominance QP table values with QpQ as the table index, where QpQ is the luma QP value on the Q side.

[0367] 4. It is proposed that the deblocking process for the chrominance component can be based on the QP applied to the quantization / inverse quantization of the chrominance block.

[0368] a. In one example, the QP for deblocking can be equal to the QP in the inverse quantization.

[0369] b. In one example, the selection of the QP for deblocking can depend on the use indication of the TS and / or ACT blocks.

[0370] i. In one example, the QP for the deblocking process can be derived as Max(QpPrimeTsMin, qP)-(cu_act_enabled_flag[xTbY][yTbY]? N:0), where QpPrimeTsMin is the minimum QP of the TS block and cu_act_enabled_flag is the use flag of the ACT.

[0371] 1. In one example, qP can be Qp′ given in Section 2.8 Cb or Qp′ Cr .

[0372] ii. In one example, the QP for the deblocking process can be derived from Max(QpPrimeTsMin, qP - (cu_act_enabled_flag[xTbY][yTbY]? N : 0)), where QpPrimeTsMin is the minimum QP of the TS block and cu_act_enabled_flag is the usage flag of ACT.

[0373] 1. In one example, qP can be Qp′ given in Section 2.8 Cb or Qp′ Cr .

[0374] iii. In the above example, for each color component, N can be set to the same or different values.

[0375] 1. In one example, for the Cb / B / G / U / components, N can be set to 5, and / or for the Cr / R / B / V components, N can be set to 3.

[0376] c. In one example, the QP of the block used in the deblocking process can be derived through the process described in Section 2.8, where the QP increment (e.g., CuQpDeltaVal) is equal to 0.

[0377] i. In one example, the above derivation can be applied only when the coding block flag (cbf) of the block is equal to 0.

[0378] d. In one example, the above example can be applied to luma blocks and / or chroma blocks.

[0379] e. In one example, the QP of the first block used in the deblocking process can be set to be equal to the QP stored and used for predicting the second block.

[0380] i. In one example, for a block with all-zero coefficients, the relevant QP used in the deblocking process can be set to be equal to the QP stored and used for predicting the second block.

[0381] 5. It is proposed to consider picture / strip / slice / tile / sub-picture level quantization parameter offsets for different coding methods in the deblocking filter decision process.

[0382] a. In one example, the selection of the picture / strip / slice / tile / sub-picture level quantization parameter offset for filter decision (e.g., chroma edge decision in the deblocking filter process) can depend on the coding method on each side.

[0383] b. In one example, the filtering process (e.g., chroma edge decision process) that needs to use the quantization parameter of the chroma block can depend on whether the block uses JCCR.

[0384] i. Alternatively, in addition, the picture / stripe level QP offset applied to the JCCR coding / decoding block (e.g., pps_joint_cbcr_qp_offset) can be further considered during the deblocking filtering process.

[0385] ii. In one example, under certain conditions, cQpPicOffset used to determine the Tc and β settings can be set to pps_joint_cbcr_qp_offset instead of pps_cb_qp_offset or pps_cr_qp_offset:

[0386] 1. In one example, when blocks on the P side or Q side use JCCR.

[0387] 2. In one example, when two blocks on the P or Q side both use JCCR.

[0388] iii. Alternatively, in addition, the filtering process can depend on the mode of JCCR (e.g., whether the mode is equal to 2).

[0389] 6. The chrominance filtering process (e.g., chrominance edge decision process) that needs to access the decoded information of the luma block can utilize the information associated with the same luma coding / decoding block used to derive the chrominance QP during the inverse quantization / quantization process.

[0390] a. In one example, the chrominance filtering process (e.g., chrominance edge decision process) that needs to use the quantization parameter of the luma block can utilize the luma coding / decoding unit of the corresponding luma samples covering the center position of the current chrominance CU.

[0391] b. Figures 9A - 9B Examples are depicted where the decoded information of CU Y 3 can be used for Figure 9B the filtering decision of three chrominance samples (1 st , 2 nd and 3 rd ) in.

[0392] 7. The chrominance filtering process (e.g., chrominance edge decision process) can depend on the quantization parameter of the scaling process (e.g., quantization / inverse quantization) applied to the chrominance block.

[0393] a. In one example, the QP used to derive β and Tc can depend on the QP of the scaling process applied to the chrominance block.

[0394] b. Alternatively, in addition, the QP of the scaling process applied to the chrominance block may have considered the chrominance CU level QP offset.

[0395] 8. Whether to call the above bullet points may depend on whether the sample to be filtered is in a block on the P side or the Q side.

[0396] a. For example, whether to use the information of the luma coding / decoding block covering the corresponding luma sample of the current chroma sample or the information of the luma coding / decoding block covering the corresponding luma sample at the center position of the chroma coding / decoding block covering the current chroma sample may depend on the block position.

[0397] i. In one example, if the current chroma sample is in a block on the Q side, the QP information of the luma coding / decoding block covering the corresponding luma sample at the center position of the chroma coding / decoding block covering the current chroma sample may be used.

[0398] ii. In one example, if the current chroma sample is in a block on the P side, then the QP information of the luma coding / decoding block covering the corresponding luma sample of the chroma sample may be used.

[0399] 9. The chroma QP used in deblocking may depend on the information of the corresponding transform block.

[0400] a. In one example, the chroma QP for deblocking on the P side may depend on the mode of the transform block on the P side.

[0401] i. In one example, the chroma QP for deblocking on the P side may depend on whether the transform block on the P side applies JCCR coding / decoding.

[0402] ii. In one example, the chroma QP for deblocking on the P side may depend on whether the transform block on the P side is coded / decoded in joint_cb_cr mode and the JCCR mode is equal to 2.

[0403] b. In one example, the chroma QP for deblocking on the Q side may depend on the mode of the transform block on the Q side.

[0404] i. In one example, the chroma QP for deblocking on the Q side may depend on whether the transform block on the Q side applies JCCR coding / decoding.

[0405] ii. In one example, the chroma QP for deblocking on the Q side may depend on whether the transform block on the Q side applies JCCR coding / decoding and the JCCR mode is equal to 2.

[0406] 10. The chroma QP may be signaled in the coding / decoding unit.

[0407] a. In one example, when the coding / decoding unit size is greater than the maximum transform block size (i.e., maxTB), the chroma QP may be signaled at the CU level. Alternatively, the chroma QP may be signaled at the TU level.

[0408] b. In one example, when the size of the coding / decoding unit is greater than the size of the VPDU, the chrominance QP can be signaled at the CU level. Alternatively, the chrominance QP can be signaled at the TU level.

[0409] 11. Whether a block is in joint_cb_cr mode can be indicated at the coding / decoding unit level.

[0410] a. In one example, whether a transform block is in joint_cb_cr mode can inherit the information of the coding / decoding unit containing the transform block.

[0411] 12. The chrominance QP used in deblocking can depend on the chrominance QP used in the scaling process minus the QP offset due to the bit depth.

[0412] a. In one example, when TuCResMode[xTb][yTb] is equal to 2, where (xTb,yTb) represents the transform block containing the first sample on the P side (i.e., p 0,0 ), the chrominance QP used in deblocking on the P side is set to the JCCR chrominance QP used in the scaling process, i.e., Qp’ CbCr minus QpBdOffsetC.

[0413] b. In one example, when TuCResMode[xTb][yTb] is equal to 2, where (xTb,yTb) represents the transform block containing the first sample on the P side (i.e., p 0,0 ), the chrominance QP used in deblocking on the P side is set to the Cb chrominance QP used in the scaling process, i.e., Qp’ Cb minus QpBdOffsetC.

[0414] c. In one example, when TuCResMode[xTb][yTb] is equal to 2, where (xTb,yTb) represents the transform block containing the first sample on the P side (i.e., p 0,0 ), the chrominance QP used in deblocking on the P side is set to the Cr chrominance QP used in the scaling process, i.e., Qp’ Cr minus QpBdOffsetC.

[0415] d. In one example, when TuCResMode[xTb][yTb] is equal to 2, where (xTb,yTb) represents the transform block containing the last sample on the Q side (i.e., q 0,0 ), the chrominance QP used in deblocking on the Q side is set to the JCCR chrominance QP used in the scaling process, i.e., Qp’ CbCr minus QpBdOffsetC.

[0416] e. In one example, when TuCResMode[xTb][yTb] is equal to 2, where (xTb, yTb) represents the transform block containing the last sample on the Q side (i.e., q 0,0 ), the chroma QP used in deblocking on the Q side is set to the Cb chroma QP used in the scaling process, i.e., Qp’ Cb minus QpBdOffsetC.

[0417] f. In one example, when TuCResMode[xTb][yTb] is equal to 2, where (xTb, yTb) represents the transform block containing the last sample on the Q side (i.e., q 0,0 ), the chroma QP used in deblocking on the Q side is set to the Cr chroma QP used in the scaling process, i.e., Qp’ Cr minus QpBdOffsetC.

[0418] 13. Different color components can have different deblocking strength controls.

[0419] a. In one example, each component can have its pps_beta_offset_div2, pps_tc_offset_div2 and / or pic_beta_offset_div2, pic_tc_offset_div2 and / or slice_beta_offset_div2, slice_tc_offset_div2.

[0420] b. In one example, for the joint_cb_cr mode, a different set of beta_offset_div2, tc_offset_div2 can be applied in the PPS and / or picture header and / or slice header.

[0421] 14. Considering different levels of offsets, the deblocking control offsets can be accumulated instead of using an overriding mechanism.

[0422] a. In one example, pps_beta_offset_div2 and / or pic_beta_offset_div2 and / or slice_beta_offset_div2 can be accumulated to obtain the deblocking offset at the slice level.

[0423] b. In one example, pps_tc_offset_div2 and / or pic_tc_offset_div2 and / or slice_tc_offset_div2 can be accumulated to obtain the deblocking offset at the slice level.

[0424] Regarding QP Setting

[0425] 15. Signal an indication (e.g., slice_cu_chroma_qp_offset_enabled_flag) to enable block-level chroma QP offset at the stripe / slice / brick / sub-picture level.

[0426] a. Alternatively, such an indication can be signaled conditionally.

[0427] i. In one example, it can be signaled under the condition of the JCCR enable flag.

[0428] ii. In one example, it can be signaled under the condition of the block-level chroma QP offset enable flag at the picture level.

[0429] iii. Alternatively, such an indication can be derived alternatively.

[0430] b. In one example, slice_cu_chroma_qp_offset_enabled_flag can be signaled only when the PPS flag for chroma QP offset (e.g., slice_cu_chroma_qp_offset_enabled_flag) is true.

[0431] c. In one example, slice_cu_chroma_qp_offset_enabled_flag can be inferred to be false only when the PPS flag for chroma QP offset (e.g., slice_cu_chroma_qp_offset_enabled_flag) is false.

[0432] d. In one example, whether to use chroma QP offset on a block can be based on the flags of chroma QP offset at the PPS level and / or stripe level.

[0433] 16. For JCCR coding / decoding blocks with different modes, use the same QP derivation method during the scaling process (quantization / inverse quantization).

[0434] a. In one example, for JCCR with mode 1 and mode 3, the QP depends on the QP offsets (e.g., pps_cbcr_qp_offset, slice_cbcr_qp_offset) signaled at the picture / stripe level.

[0435] Filtering Procedure

[0436] 17. Deblocking of all color components except the first color component can follow the deblocking process of the first color component.

[0437] a. In one example, when the color format is 4:4:4, the deblocking process for the second and third components may follow the deblocking process for the first component.

[0438] b. In one example, when the color format is 4:4:4 in the RGB color space, the deblocking process for the second and third components may follow the deblocking process for the first component.

[0439] c. In one example, when the color format is 4:2:2, the vertical deblocking process for the second and third components may follow the vertical deblocking process for the first component.

[0440] d. In the above examples, the deblocking process may refer to the deblocking decision process and / or the deblocking filtering process.

[0441] 18. How to calculate the gradient used in the deblocking filtering process may depend on the codec mode information and / or the quantization parameter.

[0442] a. In one example, the gradient calculation may only consider the gradient on one side, where the samples on that side are not losslessly coded.

[0443] b. In one example, if both sides are losslessly coded or nearly losslessly coded (e.g., the quantization parameter is equal to 4), the gradient may be directly set to 0.

[0444] i. Alternatively, if both sides are losslessly coded or nearly losslessly coded (e.g., the quantization parameter is equal to 4), the boundary strength (e.g., BS) may be set to 0.

[0445] c. In one example, if the samples on the P side are losslessly coded and the samples on the Q side are lossily coded, the gradient used in the deblocking on / off decision and / or the strong filter on / off decision may only include the gradient of the samples on the Q side, and vice versa.

[0446] i. Alternatively, in addition, the gradient on one side may be scaled by N.

[0447] 1. N is an integer (e.g., 2) and may depend on

[0448] a. the video content (e.g., screen content or natural content)

[0449] b. the message signaled in the DPS / SPS / VPS / PPS / APS / picture header / strip header / slice group header / largest coding unit (LCU) / coding unit (CU) / LCU row / LCU group / TU / PU block / video coding unit

[0450] c. the position of the CU / PU / TU / block / video coding unit

[0451] d. Coding / decoding mode of a block containing samples along an edge

[0452] e. Transformation matrix applied to a block containing samples along an edge

[0453] f. Block dimension / block shape of the current block and / or its neighboring blocks

[0454] g. Indication of color format (such as 4:2:0, 4:4:4, RGB or YUV)

[0455] h. Coding / decoding tree structure (such as a binary tree or a single tree)

[0456] i. Slice / slice group type and / or picture type

[0457] j. Color component (for example, it may only apply to Cb or Cr)

[0458] k. Temporal layer ID

[0459] l. Profile / level / tier of the standard

[0460] m. Alternatively, N can be signaled to the decoder

[0461] Regarding Boundary Strength Derivation

[0462] 19. It is proposed to treat JCCR-coded / decoded blocks as those non-JCCR-coded / decoded blocks in the boundary strength decision process.

[0463] a. In one example, the determination of the boundary strength (BS) can be independent of the check on the JCCR usage of two blocks on the P side and the Q side.

[0464] b. In one example, the boundary strength (BS) of a block can be determined regardless of whether the block is coded / decoded using JCCR.

[0465] 20. It is proposed to derive the boundary strength (BS) without comparing the reference pictures and / or the number of MVs associated with the block on the P side with the reference pictures of the block on the Q side.

[0466] b. In one example, the deblocking filter can be disabled even if the two blocks have different reference pictures.

[0467] c. In one example, the deblocking filter can be disabled even when the two blocks have different numbers of MVs (for example, one is unidirectionally predicted and the other is bidirectionally predicted).

[0468] d. In one example, when the motion vector difference of one or all reference picture lists between the blocks on the P side and the Q side is greater than or equal to the threshold Th, the value of BS can be set to 1.

[0469] i. Alternatively, in addition, when the motion vector difference of one or all reference picture lists between the blocks on the P side and the Q side is less than or equal to the threshold Th, the value of BS can be set to 0.

[0470] e. In one example, the motion vector difference between two blocks greater than the threshold Th can be defined as (Abs(MVP[0].x - MVQ[0].x)>Th || Abs(MVP[0].y - MVQ[0].y)>Th || Abs(MVP[1].x - MVQ[1].x)>Th) || Abs(MVP[1].y - MVQ[1].y)>Th

[0471] i. Alternatively, the motion vector difference between two blocks greater than the threshold Th can be defined as (Abs(MVP[0].x - MVQ[0].x)>Th && Abs(MVP[0].y - MVQ[0].y)>Th && Abs(MVP[1].x - MVQ[1].x)>Th) && Abs(MVP[1].y - MVQ[1].y)>Th

[0472] ii. Alternatively, in one example, the motion vector difference between two blocks greater than the threshold Th can be defined as (Abs(MVP[0].x - MVQ[0].x)>Th || Abs(MVP[0].y - MVQ[0].y)>Th) && (Abs(MVP[1].x - MVQ[1].x)>Th) || Abs(MVP[1].y - MVQ[1].y)>Th

[0473] iii. Alternatively, in one example, the motion vector difference between two blocks greater than the threshold Th can be defined as (Abs(MVP[0].x - MVQ[0].x)>Th && Abs(MVP[0].y - MVQ[0].y)>Th) || (Abs(MVP[1].x - MVQ[1].x)>Th) && Abs(MVP[1].y - MVQ[1].y)>Th

[0474] f. In one example, a block that does not have a motion vector in a given list can be considered to have a zero motion vector in that list.

[0475] g. In the above example, Th is an integer (such as 4, 8, or 16).

[0476] h. In the above example, Th can depend on

[0477] i. video content (such as, screen content or natural content)

[0478] ii. Messages signaled in DPS / SPS / VPS / PPS / APS / Picture Header / Strip Header / Slice Group Header / Largest Coding Unit (LCU) / Coding Unit (CU) / LCU Row / LCU Group / TU / PU Block / Video Coding Unit

[0479] iii. Positions of CU / PU / TU / Block / Video Coding Unit

[0480] iv. Coding mode of a block containing samples along an edge

[0481] v. Transformation matrix applied to a block containing samples along an edge

[0482] vi. Block dimension / block shape of the current block and / or its neighboring blocks

[0483] vii. Indication of color format (such as 4:2:0, 4:4:4, RGB or YUV)

[0484] viii. Coding tree structure (such as a binary tree or a single tree)

[0485] ix. Strip / Strip Group type and / or Picture type

[0486] x. Color component (e.g., can apply only to Cb or Cr)

[0487] xi. Temporal layer ID

[0488] xii. Profile / Level / Tier of the standard

[0489] xiii. Alternatively, Th can be signaled to the decoder

[0490] i. The above examples can be applied under certain conditions.

[0491] i. In one example, the condition is that blkP and blkQ are not coded in an intra mode.

[0492] ii. In one example, the condition is that blkP and blkQ have zero coefficients in the luminance component.

[0493] iii. In one example, the condition is that blkP and blkQ are not coded in the CIIP mode.

[0494] iv. In one example, the condition is that blkP and blkQ are coded in the same prediction mode (e.g., IBC or inter).

[0495] Regarding the Luma Deblocking Filtering Process

[0496] 21. Different QPs can be used for TS-encoded / decoded blocks and non-TS-encoded / decoded blocks for deblocking.

[0497] a. In one example, the QP for TS can be used for TS-encoded blocks, and the QP for non-TS can be used for non-TS-encoded blocks.

[0498] 22. The luminance filtering process (e.g., the luminance edge decision process) can depend on the quantization parameter of the scaling process applied to the luminance block.

[0499] b. In one example, the QP used to derive β and Tc can depend on the clipping range of the transform skip, e.g., as indicated by QpPrimeTsMin.

[0500] 23. It is proposed to use the same gradient calculation for large block boundaries and smaller block boundaries.

[0501] c. In one example, the deblocking filter on / off decision described in Section 2.1.4 can also be applied to large block boundaries.

[0502] i. In one example, for large block boundaries, the threshold beta in the decision can be modified.

[0503] 1. In one example, beta can depend on the quantization parameter.

[0504] 2. In one example, the beta for the deblocking filter on / off decision for large block boundaries can be smaller than the beta for smaller block boundaries.

[0505] a. Alternatively, in one example, the beta for the deblocking filter on / off decision for large block boundaries can be greater than the beta for smaller block boundaries.

[0506] b. Alternatively, in one example, the beta for the deblocking filter on / off decision for large block boundaries can be equal to the beta for smaller block boundaries.

[0507] 3. In one example, beta is an integer and can be based on

[0508] a. Video content (e.g., screen content or natural content)

[0509] b. Messages signaled in DPS / SPS / VPS / PPS / APS / picture header / strip header / slice group header / largest coding unit (LCU) / coding unit (CU) / LCU row / LCU group / TU / PU block / video coding unit

[0510] c. The position of CU / PU / TU / block / video coding unit

[0511] d. Coding / decoding mode of a block containing samples along an edge

[0512] e. Transformation matrix applied to a block containing samples along an edge

[0513] f. Block dimension / block shape of the current block and / or its neighboring blocks

[0514] g. Indication of color format (such as 4:2:0, 4:4:4, RGB or YUV)

[0515] h. Coding / decoding tree structure (such as a binary tree or a single tree)

[0516] i. Slice / slice group type and / or picture type

[0517] j. Color component (e.g., may apply only to Cb or Cr)

[0518] k. Temporal layer ID

[0519] l. Standard profile / level / hierarchy

[0520] m. Alternatively, beta signaling may be notified to the decoder

[0521] Regarding the Scaling Matrix (Inverse Quantization Matrix)

[0522] 24. The value at a specific position of the quantization matrix can be set to a constant.

[0523] a. In one example, the position can be the position of (x, y), where x and y are two integer variables (e.g., x = y = 0), and (x, y) are coordinates relative to the TU / TB / PU / PB / CU / CB.

[0524] i. In one example, the position can be the position of the DC.

[0525] b. In one example, the constant value can be 16.

[0526] c. In one example, signaling of matrix values may not be used for those positions.

[0527] 25. A constraint can be set such that the average / weighted average of some positions of the quantization matrix can be a constant.

[0528] a. In one example, the deblocking process can depend on the constant value.

[0529] b. In one example, the constant value can be indicated in the DPS / VPS / SPS / PPS / slice / picture / slice / brick header.

[0530] 26. One or more indications may be signaled in the picture header to notify the scaling matrix to be selected in the picture associated with the picture header.

[0531] Regarding the Cross - Component Adaptive Loop Filter (CCALF)

[0532] 27. CCALF may be applied before some loop filtering processes in the decoder

[0533] a. In one example, CCALF may be applied before deblocking at the decoder.

[0534] b. In one example, CCALF may be applied before SAO at the decoder.

[0535] c. In one example, CCALF may be applied before ALF at the decoder.

[0536] d. Alternatively, the order of different filters (e.g., CCALF, ALF, SAO, deblocking filter) may not be fixed.

[0537] i. In one example, the invocation of CCLAF may be before one filtering process of a video unit or after another filtering process of another video unit.

[0538] ii. In one example, the video unit may be a CTU / CTB / strip / slice / tile / picture / sequence.

[0539] e. Alternatively, the indication of the order of different filters (e.g., CCALF, ALF, SAO, deblocking filter) may be signaled on-the-fly or derived.

[0540] i. Alternatively, the indication to invoke CCALF may be signaled on-the-fly or derived.

[0541] f. Explicit (e.g., signaled from the encoder to the decoder) or implicit (e.g., derived at the encoder and decoder) indications on how to control CCALF may be decoupled for different color components (such as Cb and Cr).

[0542] g. Whether and / or how to apply CCALF may depend on the color format (such as RGB and YCbCr) and / or color sampling format (such as 4:2:0, 4:2:2, and 4:4:4), and / or color downsampling position or phase.

[0543] Regarding the Chroma QP Offset List

[0544] 28. The signaling and / or selection of the chroma QP offset list may depend on the codec prediction mode / picture type / strip or slice or tile type.

[0545] a. For different coding and decoding modes, chrominance QP offset lists, such as cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i], can be different.

[0546] b. In one example, whether and how to apply the chrominance QP offset list can depend on whether the current block is coded in an intra mode.

[0547] c. In one example, whether and how to apply the chrominance QP offset list can depend on whether the current block is coded in an inter mode.

[0548] d. In one example, whether and how to apply the chrominance QP offset list can depend on whether the current block is coded in a palette mode.

[0549] e. In one example, whether and how to apply the chrominance QP offset list can depend on whether the current block is coded in an IBC mode.

[0550] f. In one example, whether and how to apply the chrominance QP offset list can depend on whether the current block is coded in a transform skip mode.

[0551] g. In one example, whether and how to apply the chrominance QP offset list can depend on whether the current block is coded in a BDPCM mode.

[0552] h. In one example, whether and how to apply the chrominance QP offset list can depend on whether the current block is coded in transform_quant_skip or in a lossless mode.

[0553] Regarding Chroma Deblocking at CTU Boundaries

[0554] 29. How to select the QP used in the deblocking filtering process (e.g., using the corresponding luma or chroma inverse quantization QP) can depend on the position of the samples relative to the CTU / CTB / VPDU boundary.

[0555] 30. How to select the QP used in the deblocking filtering process (e.g., using the corresponding luma or chroma inverse quantization QP) can depend on the color format (e.g., RGB and YCbCr) and / or color sampling format (e.g., 4:2:0, 4:2:2, and 4:4:4), and / or color subsampling position or phase.

[0556] 31. For the edges at the CTU boundary, deblocking can be based on the luma QP of the corresponding block.

[0557] a. In one example, for a horizontal edge at the CTU boundary, deblocking can be based on the luminance QP of the corresponding block.

[0558] i. In one example, deblocking can be based on the luminance QP of the corresponding block on the P side.

[0559] ii. In one example, deblocking can be based on the luminance QP of the corresponding block on the Q side.

[0560] b. In one example, for a vertical edge at the CTU boundary, deblocking can be based on the luminance QP of the corresponding block.

[0561] i. In one example, deblocking can be based on the luminance QP of the corresponding block on the P side.

[0562] ii. In one example, deblocking can be based on the luminance QP of the corresponding block on the Q side.

[0563] c. In one example, for an edge at the CTU boundary, deblocking can be based on the luminance QP on the P side and the chrominance QP on the Q side.

[0564] d. In one example, for an edge at the CTU boundary, deblocking can be based on the luminance QP on the Q side and the chrominance QP on the P side.

[0565] e. In this bullet point, "CTU boundary" can refer to a specific CTU boundary, such as the CTU upper boundary or the CTU lower boundary.

[0566] 32. For a horizontal edge at the CTU boundary, deblocking can be based on a function of the chrominance QP on the P side.

[0567] a. In one example, deblocking can be based on an average function of the chrominance QP on the P side.

[0568] i. In one example, the function can be based on the average value of the chrominance QP for every 8 luminance samples.

[0569] ii. In one example, the function can be based on the average value of the chrominance QP for every 16 luminance samples.

[0570] iii. In one example, the function can be based on the average value of the chrominance QP for every 32 luminance samples.

[0571] iv. In one example, the function can be based on the average value of the chrominance QP for every 64 luminance samples.

[0572] v. In one example, the function can be based on the average value of the chrominance QP for each CTU.

[0573] b. In one example, deblocking can be based on a maximum function of the chrominance QP on the P side.

[0574] i. In one example, the function may be based on the maximum value of the chroma QP for every 8 luminance samples.

[0575] ii. In one example, the function may be based on the maximum value of the chroma QP for every 16 luminance samples.

[0576] iii. In one example, the function may be based on the maximum value of the chroma QP for every 32 luminance samples.

[0577] iv. In one example, the function may be based on the maximum value of the chroma QP for every 64 luminance samples.

[0578] v. In one example, the function may be based on the maximum value of the chroma QP for each CTU.

[0579] c. In one example, deblocking may be based on the minimum function of the chroma QPs on the P side.

[0580] i. In one example, the function may be based on the minimum value of the chroma QP for every 8 luminance samples.

[0581] ii. In one example, the function may be based on the minimum value of the chroma QP for every 16 luminance samples.

[0582] iii. In one example, the function may be based on the minimum value of the chroma QP for every 32 luminance samples.

[0583] iv. In one example, the function may be based on the minimum value of the chroma QP for every 64 luminance samples.

[0584] v. In one example, the function may be based on the minimum value of the chroma QP for each CTU.

[0585] d. In one example, deblocking may be based on the subsampling function of the chroma QP on the P side.

[0586] i. In one example, the function may be based on the chroma QP of the k-th chroma sample for every 8 luminance samples.

[0587] 1. In one example, the k-th sample may be the first sample.

[0588] 2. In one example, the k-th sample may be the last sample.

[0589] 3. In one example, the k-th sample may be the third sample.

[0590] 4. In one example, the k-th sample may be the fourth sample.

[0591] ii. In one example, the function may be based on the chroma QP of the k-th chroma sample for every 16 luma samples.

[0592] 1. In one example, the k-th sample may be the first sample.

[0593] 2. In one example, the k-th sample may be the last sample.

[0594] 3. In one example, the k-th sample may be the 7th sample.

[0595] 4. In one example, the k-th sample may be the 8th sample.

[0596] iii. In one example, the function may be based on the chroma QP of the k-th chroma sample for every 32 luma samples.

[0597] 1. In one example, the k-th sample may be the first sample.

[0598] 2. In one example, the k-th sample may be the last sample.

[0599] 3. In one example, the k-th sample may be the 15th sample.

[0600] 4. In one example, the k-th sample may be the 16th sample.

[0601] iv. In one example, the function may be based on the chroma QP of the k-th chroma sample for every 64 luma samples.

[0602] 1. In one example, the k-th sample may be the first sample.

[0603] 2. In one example, the k-th sample may be the last sample.

[0604] 3. In one example, the k-th sample may be the 31st sample.

[0605] 4. In one example, the k-th sample may be the 32nd sample.

[0606] v. In one example, the function may be based on the chroma QP of the k-th chroma sample for each CTU.

[0607] e. Alternatively, the above items may be applied to the chroma QP on the Q side for deblocking.

[0608] 33. The quantization group of the chroma component must be restricted to be greater than a certain size.

[0609] a. In one example, it may be constrained that the width of the quantization group of the chroma component must be greater than a certain value K.

[0610] i. In one example, K is equal to 4.

[0611] 34. The quantization group that can constrain the luminance component must be greater than a certain size.

[0612] a. In one example, the width of the quantization group that can constrain the luminance component must be greater than a value K.

[0613] i. In one example, K is equal to 8.

[0614] 35. The QP that can constrain the chrominance component can be the same for a chrominance row segment of length 4*m starting from (4*m*x, 2y) relative to the top left of the picture, where x and y are non-negative integers; and m is a positive integer.

[0615] a. In one example, m can be equal to 1.

[0616] b. In one example, the width of the quantization group of the chrominance component must be not less than 4*m.

[0617] 36. The QP that can constrain the chrominance component can be the same for a chrominance column segment of length 4*n starting from (2*x, 4*n*y) relative to the top left of the picture, where x and y are non-negative integers; and m is a positive integer.

[0618] a. In one example, n can be equal to 1.

[0619] b. In one example, the height of the quantization group of the chrominance component must be not less than 4*n.

[0620] Regarding the Chroma Deblocking Filtering Process

[0621] 37. Depending on a second syntax element signaled in a second video unit (e.g., SPS or PPS or VPS), a first syntax element that controls the use of codec tool X can be signaled in a first video unit (e.g., picture header).

[0622] a. In one example, the first syntax element is signaled only if the second syntax element indicates that codec tool X is enabled.

[0623] b. In one example, X is Bidirectional Optical Flow (BDOF).

[0624] c. In one example, X is Predictive Refinement Optical Flow (PROF).

[0625] d. In one example, X is Decoder-Side Motion Vector Refinement (DMVR).

[0626] e. In one example, the signaling notification for the use of codec tool X can be based on a conditional check of the slice type (e.g., P or B slice; non-I slice).

[0627] Regarding the Chroma Deblocking Filtering Process

[0628] 38. The deblocking filter decision process for two chrominance blocks can be unified to be called only once, and the decision is applied to the two chrominance blocks.

[0629] b. In one example, for the Cb and Cr components, the decision on whether to perform deblocking filtering can be the same.

[0630] c. In one example, if it is determined to apply deblocking filtering, for the Cb and Cr components, the decision on whether to perform stronger deblocking filtering can be the same.

[0631] d. In one example, as described in Section 2.2.7, the deblocking conditions and the strong filter on / off conditions can be checked only once. However, it can be modified to check the information of the two chrominance components.

[0632] i. In one example, the average value of the gradients of the Cb and Cr components can be used in the above decisions for the Cb and Cr components.

[0633] ii. In one example, chrominance stronger filtering is performed only when both the Cb and Cr components satisfy the strong filtering conditions.

[0634] 1. Alternatively, in one example, chrominance weak filtering is performed only when at least one chrominance component does not satisfy the strong filtering conditions.

[0635] Regarding ACT

[0636] 39. Whether the deblocking QP is equal to the inverse quantization QP can depend on whether ACT is applicable.

[0637] a. In one example, when ACT is applied to a block, the deblocking QP value can depend on the QP value before ACT QP adjustment.

[0638] b. In one example, when ACT is not applied to a block, the deblocking QP value can always be equal to the inverse quantization QP value.

[0639] c. In one example, when neither ACT nor TS is applied to a block, the deblocking QP value can always be equal to the inverse quantization QP value.

[0640] 40. ACT and BDPCM can be specifically applied at the block level.

[0641] a. In one example, when ACT is applied to a block, BDPCM for luminance should not be applied to that block.

[0642] b. In one example, when ACT is applied to a block, BDPCM for chrominance should not be applied to that block.

[0643] c. In one example, when ACT is applied to a block, neither BDPCM for luminance nor BDPCM for chrominance should be applied to that block.

[0644] d. In one example, when BDPCM for luminance and / or chrominance is applied to a block, ACT should not be applied to that block.

[0645] 41. Whether the BDPCM mode is enabled can be inferred based on the use of ACT (e.g., cu_act_enabled_flag).

[0646] a. In one example, the inferred value of the chrominance BDPCM mode can be defined as (cu_act_enabled_flag && intra_bdpcm_luma_flag && sps_bdpcm_chroma_enabled_flag? true : false).

[0647] b. In one example, if sps_bdpcm_chroma_enabled_flag is false, when intra_bdpcm_luma_flag is not signaled and cu_act_enabled_flag is true, intra_bdpcm_luma_flag can be inferred as false.

[0648] c. In one example, when intra_bdpcm_luma_flag is true and sps_bdpcm_chroma_enabled_flag is false, cu_act_enabled_flag can be inferred as false.

[0649] d. In one example, when cu_act_enabled_flag is true and sps_bdpcm_chroma_enabled_flag is false, intra_bdpcm_luma_flag can be inferred as false.

[0650] General Requirements

[0651] 42. The methods proposed above can be applied under certain conditions.

[0652] a. In one example, the condition is that the color format is 4:2:0 and / or 4:2:2.

[0653] i. Alternatively, additionally, for the 4:4:4 color format, how to apply the deblocking filter to two color chrominance components can follow the current design.

[0654] b. In one example, an indication of the use of the above method can be signaled at the sequence / picture / strip / slice / tile / video region level (e.g., SPS / PPS / picture header / strip header).

[0655] c. In one example, the use of the above method can depend on

[0656] i. Video content (e.g., screen content or natural content)

[0657] ii. Messages signaled in DPS / SPS / VPS / PPS / APS / picture header / strip header / slice group header / largest coding unit (LCU) / coding unit (CU) / LCU row / LCU group / TU / PU block / video coding unit

[0658] iii. The position of the CU / PU / TU / block / video coding unit

[0659] a. In one example, to filter samples along the CTU / CTB boundary (e.g., the first K (e.g., K = 4 / 8) to the top / left / right / bottom boundary), an existing design can be applied. For other samples, the proposed method (e.g., bullet points 3 / 4) can be used instead.

[0660] iv. The coding mode of the block containing samples along the edge

[0661] v. The transform matrix applied to the block containing samples along the edge

[0662] vi. The block dimension / block shape of the current block and / or its neighboring blocks

[0663] vii. An indication of the color format (such as 4:2:0, 4:4:4, RGB, or YUV)

[0664] viii. The coding tree structure (such as a binary tree or a single tree)

[0665] ix. The strip / strip group type and / or the picture type

[0666] x. The color component (e.g., it can only apply to Cb or Cr)

[0667] xi. The temporal layer ID

[0668] xii. The standard profile / level / hierarchy

[0669] xiii. Alternatively, m and / or n can be signaled to the decoder

[0670] 5. Additional embodiments

[0671] These embodiments are based on JVET-O2001-vE. Newly added text is shown in underlined bold italics. Deleted text is marked with Underlined Bold out.

[0672] 5.1. Embodiment #1 regarding chroma QP in deblocking

[0673] 8.8.3.6 Edge filtering process in one direction

[0674] …

[0675] – Otherwise (cIdx is not equal to 0), the edge filtering process for the chroma coding block of the current coding / decoding unit specified by cIdx includes the following ordered steps:

[0676] 1. The variable cQpPicOffset is derived as follows:

[0677] cQpPicOffset = cIdx == 1? pps_cb_qp_offset : pps_cr_qp_offset (8-1065)

[0678] 8.8.3.6.3 Chroma block edge decision process

[0679] …

[0680] Variable Qp Q and Qp P are set to be equal to the Qp Y value of the coding / decoding unit that includes the coding blocks containing samples q 0,0 and p 0,0 respectively.

[0681] Variable Qp C is derived as follows:

[0682]

[0683] qPi = (Qp Q + Qp P + 1) >> 1 (8-1132)

[0684] Qp C = ChromaQpTable[cIdx - 1][qPi] + cQpPicOffset (8-1133)

[0685] Note – The variable cQpPicOffset adjusts the value of pps_cb_qp_offset or pps_cr_qp_offset according to whether the filtered chrominance component is the Cb or Cr component. However, in order to avoid changing the adjustment amount within the picture, the filtering process does not include adjustment of the value of slice_cb_qp_offset or slice_cr_qp_offset, nor does it include (when cu_chroma_qp_offset_enabled_flag is equal to 1) adjustment of the value of CuQpOffset Cb 、CuQpOffset Cr or CuQpOffset CbCr value.

[0686] The value of the variable β′ is determined as specified in Table 8-18 based on the quantization parameter Q derived as follows:

[0687] Q = Clip3(0, 63, Qp C +(slice_beta_offset_div2 << 1)) (8-1134)

[0688] where slice_beta_offset_div2 is the value of the syntax element slice_beta_offset_div2 of the slice containing the sample q 0,0 .

[0689] The derivation of the variable β is as follows:

[0690] β = β′ * (1 << (BitDepth C - 8)) (8-1135)

[0691] The variable t C ′ value is determined as specified in Table 8-18 based on the quantization parameter Q derived as follows:

[0692] Q = Clip3(0, 65, Qp C + 2 * (bS - 1)+(slice_tc_offset_div2 << 1)) (8-1136)

[0693] where slice_tc_offset_div2 is the value of the syntax element slice_tc_offset_div2 of the slice containing the sample q 0,0 .

[0694] The variable t C derivation is as follows:

[0695] t C = (BitDepth C<10)?(t C ′ + 2)>>(10 - BitDepth C ):t C ′*(1<<(BitDepth C - 8))(8 - 1137)

[0696] 5.2. Example #2 for boundary strength derivation

[0697] 8.8.3.5 Derivation process of boundary filtering strength

[0698] The inputs to this process are:

[0699] – The picture sample array recPicture,

[0700] – The position (xCb, yCb) of the top - left sample of the current coding / decoding block relative to the top - left sample of the current picture,

[0701] – The variable nCbW specifying the width of the current coding / decoding block,

[0702] – The variable nCbH specifying the height of the current coding / decoding block,

[0703] – The variable edgeType specifying whether to filter vertical edges (EDGE_VER) or horizontal edges (EDGE_HOR),

[0704] – The variable cIdx specifying the color component of the current coding / decoding block,

[0705] – The two - dimensional (nCbW)x(nCbH) array edgeFlags.

[0706] The output of this process is the two - dimensional (nCbW)x(nCbH) array bS specifying the boundary filtering strength.

[0707] …

[0708] For xD i where i = 0..xN, and yD j where j = 0..yN, the following applies:

[0709] – If edgeFlags[xD i [yD j is equal to 0, then the variable bS[xD i [yD j is set to be equal to 0.

[0710] – Otherwise, the following applies:

[0711] …

[0712] – The variable bS[xDi [yD j The derivation of []][yD

[0713] – If cIdx is equal to 0, and the samples p 0 and q 0 are both in the coding / decoding block where intra_bdpcm_flag is equal to 1, then bS[xD i [yD j is set to be equal to 0.

[0714] – Otherwise, if the sample p 0 or q 0 is in the coding / decoding block of the coding / decoding unit encoded in the intra prediction mode, then bS[xD i [yD j is set to be equal to 2.

[0715] – Otherwise, if the block edge is also the transform block edge, and the sample p 0 or q 0 is in the coding / decoding block where ciip_flag is equal to 1, then bS[xD i [yD j is set to be equal to 2.

[0716] – Otherwise, if the block edge is also the transform block edge, and the sample p 0 or q 0 is in the transform block containing one or more non-zero transform coefficient levels, then bS[xD i [yD j is set to be equal to 1.

[0717] – Otherwise, if the block edge is also the transform block edge, cIdx is greater than 0, and the sample p 0 or q 0 is in the transform unit where tu_joint_cbcr_residual_flag is equal to 1, then bS[xD i [yD j is set to be equal to 1.

[0718] – Otherwise, if the prediction mode of the coding / decoding sub-block containing the sample p 0 is different from the prediction mode of the coding / decoding sub-block containing the sample q 0 (i.e., one coding / decoding sub-block is encoded in the IBC prediction mode and the other is encoded in the inter prediction mode), then bS[xD i [yD j is set to be equal to 1.

[0719] – Otherwise, if cIdx is equal to 0, and one or more of the following conditions are true, then bS[xDi [yD j is set to be equal to 1:

[0720]

[0721]

[0722]

[0723] – Otherwise, the variable bS[xD i [yD j is set to be equal to 0.

[0724] 5.3. Example #3 for boundary strength derivation

[0725] 8.8.3.6 Derivation process of boundary filtering strength

[0726] The inputs of this process are:

[0727] – Array of picture samples recPicture,

[0728] – Position (xCb, yCb) of the top-left sample of the current coding / decoding block relative to the top-left sample of the current picture,

[0729] – Variable nCbW specifying the width of the current coding / decoding block,

[0730] – Variable nCbH specifying the height of the current coding / decoding block,

[0731] – Variable edgeType specifying whether to filter vertical edges (EDGE_VER) or horizontal edges (EDGE_HOR),

[0732] – Variable cIdx specifying the color component of the current coding / decoding block,

[0733] – Two-dimensional (nCbW) x (nCbH) array edgeFlags.

[0734] The output of this process is a two-dimensional (nCbW) x (nCbH) array bS specifying the boundary filtering strength.

[0735] …

[0736] For xD i where i = 0..xN, and yD j where j = 0..yN, the following applies:

[0737] – If edgeFlags[xD i [yD j is equal to 0, then the variable bS[xD i[yD j is set to be equal to 0.

[0738] – Otherwise, the following applies:

[0739] …

[0740] – The derivation of variable bS[xD i [yD j is as follows:

[0741] – If cIdx is equal to 0, and both sample points p 0 and q 0 are in the coding / decoding block where intra_bdpcm_flag is equal to 1, then bS[xD i [yD j is set to be equal to 0.

[0742] – Otherwise, if either sample point p 0 or q 0 is in the coding / decoding block of the coding / decoding unit encoded in the intra prediction mode, then bS[xD i [yD j is set to be equal to 2.

[0743] – Otherwise, if the block edge is also a transform block edge, and either sample point p 0 or q 0 is in the coding / decoding block where ciip_flag is equal to 1, then bS[xD i [yD j is set to be equal to 2.

[0744] – Otherwise, if the block edge is also a transform block edge, and either sample point p 0 or q 0 is in the transform block containing one or more non-zero transform coefficient levels, then bS[xD i [yD j is set to be equal to 1.

[0745]

[0746] – Otherwise, if the prediction mode of the coding / decoding sub-block containing sample point p 0 is different from the prediction mode of the coding / decoding sub-block containing sample point q 0 (i.e., one coding / decoding sub-block is encoded in the IBC prediction mode and the other is encoded in the inter prediction mode), then bS[xD i [yD j is set to be equal to 1.

[0747] – Otherwise, if cIdx is equal to 0, and one or more of the following conditions are true, then bS[xD i[yD j is set to be equal to 1:

[0748] – including the sample point p 0 of the coding / decoding sub-block and the coding / decoding sub-block including the sample point q 0 are both encoded in the IBC prediction mode, and the absolute difference between the horizontal or vertical components of the block vectors used in the prediction of the two coding / decoding sub-blocks is greater than or equal to 8 in units of 1 / 16 luminance samples.

[0749] – For the prediction of the coding / decoding sub-block including the sample point p 0 and the prediction of the coding / decoding sub-block including the sample point q 0 different reference pictures or different numbers of motion vectors are used.

[0750] Note 1 – Determining whether the reference pictures used for the two coding / decoding sub-blocks are the same or different is based only on which pictures are referenced, regardless of whether the index of reference picture list 0 or the index of reference picture list 1 is used to form the prediction, and also regardless of whether the index positions within the reference picture list are different.

[0751] Note 2 – The number of motion vectors used for the prediction of the coding / decoding sub-block with the top-left sample coverage (xSb, ySb) is equal to PredFlagL0[xSb][ySb] + PredFlagL1[xSb][ySb].

[0752] – One motion vector is used to predict the coding / decoding sub-block including the sample point p 0 and one motion vector is used to predict the coding / decoding sub-block including the sample point q 0 and the absolute difference between the horizontal or vertical components of the motion vectors used is greater than or equal to 8 in units of 1 / 16 luminance samples.

[0753] – Two motion vectors and two different reference pictures are used to predict the coding / decoding sub-block including the sample point p 0 and the two motion vectors of the same two reference pictures are used to predict the coding / decoding sub-block including the sample point q 0 and the absolute difference between the horizontal or vertical components of the two motion vectors used in the prediction of the two coding / decoding sub-blocks of the same reference picture is greater than or equal to 8 in units of 1 / 16 luminance samples.

[0754] – Two motion vectors of the same reference picture are used to predict the coding / decoding sub-block including the sample point p 0 and two motion vectors of the same reference picture are used to predict the coding / decoding sub-block including the sample point q 0 and the following two conditions are both true:

[0755] – The absolute difference between the horizontal or vertical components of the list 0 motion vectors used in the prediction of two codec sub-blocks is greater than or equal to 8 in units of 1 / 16 luma samples, or the absolute difference between the horizontal or vertical components of the list 1 motion vectors used in the prediction of two codec sub-blocks is greater than or equal to 8 in units of 1 / 16 luma samples.

[0756] – In the prediction of the codec sub-block containing sample p 0 the absolute difference between the horizontal or vertical component of the list 0 motion vector and the list 1 motion vector used in the prediction of the codec sub-block containing sample q 0 is greater than or equal to 8 in units of 1 / 16 luma samples, or the absolute difference between the horizontal or vertical component of the list 1 motion vector used in the prediction of the codec sub-block containing sample p 0 and the list 0 motion vector used in the prediction of the codec sub-block containing sample q 0 is greater than or equal to 8 in units of 1 / 16 luma samples.

[0757] – Otherwise, the variable bS[xD i [yD j is set to be equal to 0.

[0758] 5.4. Example #4 for Luma Deblocking Filter Processing

[0759] 8.8.3.6.1 Decision Process for Luma Block Edges

[0760] The inputs to this process are:

[0761] – The picture sample array recPicture,

[0762] – The position (xCb, yCb) specifying the top-left sample of the current codec block relative to the top-left sample of the current picture,

[0763] – The position (xBl, yBl) specifying the top-left sample of the current block relative to the top-left sample of the current codec block,

[0764] – The variable edgeType specifying whether to filter a vertical edge (EDGE_VER) or a horizontal edge (EDGE_HOR),

[0765] – The variable bS specifying the boundary filter strength,

[0766] – The variable maxFilterLengthP specifying the maximum filter length,

[0767] – The variable maxFilterLengthQ specifying the maximum filter length.

[0768] The output of this process is:

[0769] – variables dE, dEp, and dEq containing decisions,

[0770] – modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[0771] – variable t C .

[0772] …

[0773] The following ordered steps apply: ...

[0774] 1. When sidePisLargeBlk or sideQisLargeBlk is greater than 0, the following applies:

[0775] a. Variables dp0L and dp3L are derived, and maxFilterLengthP is modified as follows:

[0776] b. Variables dq0L and dq3L are derived as follows:

[0777]

[0778] …

[0779] 2. Variables dE, dEp, and dEq are derived as follows:

[0780] …

[0781] 5.5. Example #5 for Chroma Deblocking Filter Processing

[0782] 8.8.3.6.3 Decision Process for Chroma Block Edges

[0783] This process is called only when ChromaArrayType is not equal to 0.

[0784] The input to this process is:

[0785] – chroma picture sample number recPicture,

[0786] – chroma position (xCb, yCb) of the top-left sample of the current chroma coding / decoding block relative to the top-left chroma sample of the current picture,

[0787] – chroma position (xBl, yBl) of the top-left sample of the current chroma block relative to the top-left sample of the current chroma coding / decoding block,

[0788] – The variable edgeType that specifies whether to filter the vertical edge (EDGE_VER) or the horizontal edge (EDGE_HOR),

[0789] – The variable cIdx that specifies the color component index,

[0790] – The variable cQpPicOffset that specifies the chrominance quantization parameter offset at the picture level,

[0791] – The variable bS that specifies the boundary filtering strength,

[0792] – The variable maxFilterLengthCbCr.

[0793] The output of this process is

[0794] – The modified variable maxFilterLengthCbCr,

[0795] – The variable t C .

[0796] The derivation of the variable maxK is as follows:

[0797] – If edgeType is equal to EDGE_VER, the following applies:

[0798] maxK = (SubHeightC == 1)? 3 : 1 (8 - 1124)

[0799] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:

[0800] maxK = (SubWidthC == 1)? 3 : 1 (8 - 1125)

[0801] The value p i and q i are derived as follows, where i = 0..maxFilterLengthCbCr and k = 0..maxK:

[0802] – If edgeType is equal to EDGE_VER, the following applies:

[0803] q i,k = recPicture[xCb + xBl + i][yCb + yBl + k] (8 - 1126)

[0804] p i,k = recPicture[xCb + xBl - i - 1][yCb + yBl + k] (8 - 1127)

[0805] subSampleC = SubHeightC (8 - 1128)

[0806] – Otherwise (edgeType equals EDGE_HOR), the following applies:

[0807] q i,k = recPicture[xCb + xBl + k][yCb + yBl + i] (8 - 1129)

[0808] p i,k = recPicture[xCb + xBl + k][yCb + yBl - i - 1] (8 - 1130)

[0809] subSampleC = SubWidthC (8 - 1131)

[0810]

[0811]

[0812] The value of variable β′ is determined as specified in Table 8 - 18 based on the quantization parameter Q derived as follows:

[0813] Q = Clip3(0, 63, Qp C + (slice_beta_offset_div2 << 1)) (8 - 1134)

[0814] where slice_beta_offset_div2 is the value of the syntax element slice_beta_offset_div2 of the slice containing sample q 0,0

[0815] The derivation of variable β is as follows:

[0816] β = β′ * (1 << (BitDepth C - 8)) (8 - 1135)

[0817] Variable t C ′s value is determined as specified in Table 8 - 18 based on the quantization parameter Q derived as follows:

[0818] Q = Clip3(0, 65, Qp C + 2 * (bS - 1)+ (slice_tc_offset_div2 << 1)) (8 - 1136)

[0819] where slice_tc_offset_div2 is the value of the syntax element slice_tc_offset_div2 of the slice containing sample q 0,0 ​The value of the syntax element slice_tc_offset_div2 of the strip.

[0820] Variable t C is derived as follows:

[0821] t C = (BitDepth C < 10)? (t C '+ 2)>>(10 - BitDepth C ): t C '*(1 <<(BitDepth C - 8)) (8 - 1137)

[0822] When maxFilterLengthCbCr is equal to 1 and bS is not equal to 2, maxFilterLengthCbCr is set to be equal to 0.

[0823] 5.6. Example #6 regarding the chroma QP in deblocking

[0824] 8.8.3.6.3 Decision process for chroma block edges

[0825] This process is called only when ChromaArrayType is not equal to 0.

[0826] The inputs to this process are:

[0827] – The chroma picture sample number recPicture,

[0828] – The chroma position (xCb, yCb) of the top - left sample of the current chroma coding block relative to the top - left chroma sample of the current picture,

[0829] – The chroma position (xBl, yBl) of the top - left sample of the current chroma block relative to the top - left sample of the current chroma coding block,

[0830] – The variable edgeType that specifies whether to filter a vertical edge (EDGE_VER) or a horizontal edge (EDGE_HOR),

[0831] – The variable cIdx that specifies the color component index,

[0832] – The variable cQpPicOffset that specifies the picture - level chroma quantization parameter offset,

[0833] – The variable bS that specifies the boundary filter strength,

[0834] – The variable maxFilterLengthCbCr.

[0835] The output of this process is

[0836] – The modified variable maxFilterLengthCbCr,

[0837] – The variable t C .

[0838] The derivation of the variable maxK is as follows:

[0839] – If edgeType is equal to EDGE_VER, the following applies:

[0840] maxK = (SubHeightC == 1)? 3 : 1 (8 - 1124)

[0841] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:

[0842] maxK = (SubWidthC == 1)? 3 : 1 (8 - 1125)

[0843] The value p i and q i are derived as follows, where i = 0..maxFilterLengthCbCr and k = 0..maxK:

[0844] – If edgeType is equal to EDGE_VER, the following applies:

[0845] q i,k = recPicture[xCb + xBl + i][yCb + yBl + k] (8 - 1126)

[0846] p i,k = recPicture[xCb + xBl - i - 1][yCb + yBl + k] (8 - 1127)

[0847] subSampleC = SubHeightC (8 - 1128)

[0848] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:

[0849] q i,k = recPicture[xCb + xBl + k][yCb + yBl + i] (8 - 1129)

[0850] p i,k = recPicture[xCb + xBl + k][yCb + yBl - i - 1] (8 - 1130)

[0851] subSampleC = SubWidthC (8 - 1131)

[0852] Variable Qp Q and Qp P are set to be equal to the Qp value of the coding unit that includes coding blocks respectively containing samples q Y and p 0,0 and p 0,0 .

[0853]

[0854] Variable Qp C is derived as follows:

[0855]

[0856] Qp C = ChromaQpTable[cIdx - 1][qPi] (8 - 1133)

[0857] Note – The variable cQpPicOffset adjusts the value of pps_cb_qp_offset or pps_cr_qp_offset according to whether the filtered chrominance component is the cb or cr component. However, in order to avoid changing the adjustment amount within the picture, the filtering process does not include adjusting the value of slice_cb_qp_offset or slice_cr_qp_offset, nor does it include (when cu_chroma_qp_offset_enabled_flag is equal to 1) adjusting the value of CuQpOffset Cb , CuQpOffset Cr or CuQpOffset CbCr .

[0858] …

[0859] 5.7. Example #7 regarding chrominance QP in deblocking

[0860] 8.8.3.6.3 Decision process for chrominance block edges

[0861] This process is called only when ChromaArrayType is not equal to 0.

[0862] The inputs to this process include:

[0863] – The chrominance picture sample array recPicture,

[0864] – The chrominance position (xCb, yCb) of the top - left sample of the current chrominance coding block relative to the top - left chrominance sample of the current picture,

[0865] …

[0866] The output of this process is

[0867] – The modified variable maxFilterLengthCbCr,

[0868] – The variable t C .

[0869] The derivation of the variable maxK is as follows:

[0870] – If edgeType is equal to EDGE_VER, the following applies:

[0871] maxK = (SubHeightC == 1)? 3 : 1 (8 - 1124)

[0872] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:

[0873] maxK = (SubWidthC == 1)? 3 : 1 (8 - 1125)

[0874] The value p i and q i are derived as follows, where i = 0..maxFilterLengthCbCr and k = 0..maxK:

[0875] – If edgeType is equal to EDGE_VER, the following applies:

[0876] q i,k = recPicture[xCb + xBl + i][yCb + yBl + k] (8 - 1126)

[0877] p i,k = recPicture[xCb + xBl - i - 1][yCb + yBl + k] (8 - 1127)

[0878] subSampleC = SubHeightC (8 - 1128)

[0879] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:

[0880] q i,k = recPicture[xCb + xBl + k][yCb + yBl + i] (8 - 1129)

[0881] p i,k= recPicture[xCb + xBl + k][yCb + yBl - i - 1] (8-1130)

[0882] subSampleC = SubWidthC (8-1131)

[0883]

[0884] The variable Qp C is derived as follows:

[0885] qPi = Clip3(0, 63, ((Qp Q + Qp P + 1) >> 1) + cQpPicOffset) (8-1132)

[0886] Qp C = ChromaQpTable[cIdx - 1][qPi] (8-1133)

[0887] Note – The variable cQpPicOffset adjusts the value of pps_cb_qp_offset or pps_cr_qp_offset according to whether the filtered chrominance component is the Cb or Cr component. However, in order to avoid changing the adjustment amount within the picture, the filtering process does not include the adjustment of the value of slice_cb_qp_offset or slice_cr_qp_offset, nor does it include (when cu_chroma_qp_offset_enabled_flag is equal to 1) the adjustment of the value of CuQpOffset Cb 、CuQpOffset Cr or CuQpOffset CbCr values.

[0888] The value of the variable β′ is determined as specified in the quantization parameter Q derived as follows in Table 8-18:

[0889] Q = Clip3(0, 63, Qp C + (slice_beta_offset_div2 << 1)) (8-1134)

[0890] where slice_beta_offset_div2 is the value of the syntax element slice_beta_offset_div2 of the slice containing the sample q 0,0 .

[0891] The derivation of the variable β is as follows:

[0892] β = β′ * (1 << (BitDepth C-8)) (8-1135)

[0893] Variable t C The value of ′ is determined as specified in Table 8-18 based on the quantization parameter Q derived as follows:

[0894] Q = Clip3(0, 65, Qp C + 2*(bS - 1)+(slice_tc_offset_div2 << 1)) (8-1136)

[0895] where slice_tc_offset_div2 is the value of the syntax element slice_tc_offset_div2 of the slice containing sample q 0,0 of the slice.

[0896] 5.8. Example #8 regarding the chrominance QP in deblocking

[0897] When making a filter decision for the three depicted samples (with solid circles), the QP of the luma CU covering the center position of the chrominance CU including the three samples is selected. Thus, for the first, second, and third chrominance samples (as Figure 11 shown), only the QP of CU Y 3 is used respectively.

[0898] In this way, the selection of the luma CU for chrominance quantization / inverse quantization processing is consistent with the selection of the luma CU for the chrominance filter decision process.

[0899] 5.9. Example #9 regarding the QP for JCCR encoding / decoding blocks

[0900] 8.7.3 Scaling process of transform coefficients

[0901] The inputs to this process are:

[0902] – The luma position (xTbY, yTbY) of the top-left sample of the current luma transform block relative to the top-left luma sample of the current picture,

[0903] – The variable nTbW specifying the width of the transform block,

[0904] – The variable nTbH specifying the height of the transform block,

[0905] – The variable cIdx specifying the color component of the current block,

[0906] – The variable bitDepth specifying the bit depth of the current color component.

[0907] The output of this process is an (nTbW)x(nTbH) array d of scaled transform coefficients with elements d[x][y].

[0908] The derivation of the quantization parameter qP is as follows:

[0909] – If cIdx is equal to 0 and transform_skip_flag[xTbY][yTbY] is equal to 0, the following applies:

[0910] qP = Qp′ Y (8-950)

[0911] – Otherwise, if cIdx is equal to 0 (and transform_skip_flag[xTbY][yTbY] is equal to 1), the following applies:

[0912] qP = Max(QpPrimeTsMin, Qp′ Y ) (8-951)

[0913] – Otherwise, if TuCResMode[xTbY][yTbY] then the following applies:

[0914] qP = Qp′ CbCr (8-952)

[0915] – Otherwise, if cIdx is equal to 1, the following applies:

[0916] qP = Qp′ Cb (8-953)

[0917] – Otherwise (cIdx is equal to 2), the following applies:

[0918] qP = Qp′ Cr (8-954)

[0919] 5.10. Example #10 regarding QP for JCCR encoding / decoding blocks

[0920] 8.8.3.2 Deblocking filtering process in one direction

[0921] The inputs to this process are:

[0922] – A variable treeType that specifies whether the current is processing the luminance component (DUAL_TREE_LUMA) or the chrominance component (DUAL_TREE_CHROMA),

[0923] – When treeType is equal to DUAL_TREE_LUMA, the reconstructed picture before deblocking, i.e., the array recPicture L ,

[0924] – When ChromaArrayType is not equal to 0 and treeType is equal to DUAL_TREE_CHROMA, the array recPicture Cb and recPicture Cr ,

[0925] – The variable edgeType that specifies whether to filter vertical edges (EDGE_VER) or horizontal edges (EDGE_HOR).

[0926] The output of this process is the modified reconstructed picture after deblocking, that is:

[0927] – When treeType is equal to DUAL_TREE_LUMA, the array recPicture L ,

[0928] – When ChromaArrayType is not equal to 0 and treeType is equal to DUAL_TREE_CHROMA, the array recPicture Cb and recPicture Cr .

[0929] The derivation of the variables firstCompIdx and lastCompIdx is as follows:

[0930] firstCompIdx = (treeType == DUAL_TREE_CHROMA)? 1 : 0 (8 - 1022)

[0931] lastCompIdx = (treeType == DUAL_TREE_LUMA || ChromaArrayType == 0)? 0 : 2(8 - 1023)

[0932] For each coding / decoding unit and each coding / decoding block of each color component of the coded / decoded unit indicated by the color component index cIdx, having a coding / decoding block width nCbW, a coding / decoding block height nCbH, and the position (xCb, yCb) of the top-left sample of the coding / decoding block, where cIdx ranges from firstCompIdx to lastCompIdx, including firstCompIdx and lastCompIdx, when cIdx is equal to 0, or when cIdx is not equal to 0 and edgeType is equal to EDGE_VER and xCb % 8 is equal to 0, or when cIdx is not equal to 0 and edgeType is equal to EDGE_HOR and yCb % 8 is equal to 0, the edges are filtered through the following ordered steps:

[0933] …

[0934] 5. The derivation of the picture sample array recPicture is as follows:

[0935]

[0936] …

[0937]

[0938] For a coding block, the edge filtering process for one direction is called as specified in Clause 8.8.3.6, with the variables edgeType, cIdx, the reconstructed picture recPicture before deblocking, the position (xCb, yCb), the coding block width nCbW, the coding block height nCbH, and the arrays bS, maxFilterLengthPs, and maxFilterLengthQs as inputs, and the modified reconstructed picture recPicture as output.

[0939] 8.8.3.5 Derivation of Boundary Filter Strength

[0940] The inputs to this process are:

[0941] – the array of picture samples recPicture,

[0942] – the position (xCb, yCb) specifying the top-left sample of the current coding block relative to the top-left sample of the current picture,

[0943] – the variable nCbW specifying the width of the current coding block,

[0944] – the variable nCbH specifying the height of the current coding block,

[0945] – the variable edgeType specifying whether to filter a vertical edge (EDGE_VER) or a horizontal edge (EDGE_HOR),

[0946] – the variable cIdx specifying the color component of the current coding block,

[0947] – a two-dimensional (nCbW) x (nCbH) array.

[0948] The output of this process is a two-dimensional (nCbW) x (nCbH) array bS specifying the boundary filter strength. The derivation of the variables xD i 、yD j 、xN, and yN is as follows:

[0949] …

[0950] For xD i and yD j , where i = 0..xN and j = 0..yN, the following applies:

[0951] – If edgeFlags[xD i [yD j is equal to 0, the variable bS[xD i [yD j is set to be equal to 0.

[0952] – Otherwise, the following applies:

[0953] – The derivation of the sample values p 0 and q 0 is as follows:

[0954] – If edgeType is equal to EDGE_VER, p 0 is set equal to and q 0 is set to be equal to

[0955] – Otherwise (edgeType is equal to EDGE_HOR), p 0 is set to be equal to q 0 is set to be equal to …

[0956] 8.8.3.6 Edge filtering process in one direction

[0957] The inputs to this process are:

[0958] – The variable edgeType that specifies whether to filter vertical edges (EDGE_VER) or horizontal edges (EDGE_HOR),

[0959] – The variable cIdx that specifies the current color component,

[0960] – The reconstructed picture recPicture before deblocking,

[0961] – The position (xCb, yCb) of the top-left sample of the current coding deblocking relative to the top-left sample of the current picture,

[0962] – The variable nCbW that specifies the width of the current coding / decoding block,

[0963] – The variable nCbH that specifies the height of the current coding / decoding block,

[0964] – The array bS that specifies the boundary strength,

[0965] – The arrays maxFilterLengthPs and maxFilterLengthQs.

[0966] The output of this process is the modified reconstructed picture recPicture after deblocking i .

[0967] …

[0968] – Otherwise (cIdx is not equal to 0), the filtering process for the edges in the chrominance coding block of the current coding / decoding unit specified by cIdx includes the following sequential steps:

[0969] 1. The variable cQpPicOffset is derived as follows:

[0970]

[0971] 3. Invoke the decision process for chrominance block edges specified in Clause 8.8.3.6.3, with the chrominance picture sample array recPicture, the position (xCb, yCb) of the chrominance coding block, the position (xBl, yBl) of the chrominance block set to be equal to (xD k , yD m ), the edge direction edgeType, the variable cQpPicOffset, the boundary filtering strength bS[xD k [yD m and the variable maxFilterLengthCbCr set to be equal to maxFilterLengthPs[xD k [yD m as inputs

[0972] 4. When maxFilterLengthCbCr is greater than 0, invoke the filtering process for chrominance block edges specified in Clause 8.8.3.6.4, with the chrominance picture sample array recPicture, the position (xCb, yCb) of the chrominance coding block, the chrominance position (xBl, yBl) of the block set to be equal to (xD k , yD m ), the edge direction edgeType, the variable maxFilterLengthCbCr and as inputs, and the variable t C as an input, and the modified chrominance picture sample array recPicture as the output.

[0973]

[0974]

[0975] 8.8.3.6.3 Decision Process for Chrominance Block Edges

[0976] This procedure is called only when ChromaArrayType is not equal to 0.

[0977] The inputs to this procedure are:

[0978] – the chroma picture sample array recPicture,

[0979] – the chroma position (xCb, yCb) of the top-left sample of the current chroma coding block relative to the top-left chroma sample of the current picture,

[0980] – the chroma position (xBl, yBl) of the top-left sample of the current chroma block relative to the top-left sample of the current chroma coding block,

[0981] – the variable edgeType that specifies whether to filter the vertical edge (EDGE_VER) or the horizontal edge (EDGE_HOR),

[0982]

[0983] – the variable cQpPicOffset that specifies the chroma quantization parameter offset at the picture level,

[0984] – the variable bS that specifies the boundary filtering strength,

[0985] – the variable maxFilterLengthCbCr.

[0986] The outputs of this procedure are

[0987] – the modified variable maxFilterLengthCbCr,

[0988] – the variable t C .

[0989] The derivation of the variable maxK is as follows:

[0990] – If edgeType is equal to EDGE_VER, the following applies:

[0991] maxK = (SubHeightC == 1)? 3 : 1 (8 - 1124)

[0992] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:

[0993] maxK = (SubWidthC == 1)? 3 : 1 (8 - 1125)

[0994] The values of p i and q i are derived as follows, where i = 0..maxFilterLengthCbCr and k = 0..maxK:

[0995] – If edgeType is equal to EDGE_VER, the following applies:

[0996]

[0997]

[0998] subSampleC = SubHeightC (8 - 1128)

[0999] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:

[1000]

[1001]

[1002] subSampleC = SubWidthC (8 - 1131)

[1003] Variable Qp Q and Qp P are set to be equal to the Qp Y value of the codec unit that includes the codec blocks containing samples q 0,0 and p 0,0 respectively.

[1004] The derivation of variable Qp C is as follows:

[1005]

[1006] Note – The variable cQpPicOffset adjusts the value of pps_cb_qp_offset or pps_cr_qp_offset according to whether the filtered chrominance component is the Cb or Cr component. However, to avoid changing the adjustment amount within the picture, the filtering process does not include adjusting the value of slice_cb_qp_offset or slice_cr_qp_offset, nor does it include (when cu_chroma_qp_offset_enabled_flag is equal to 1) adjusting the value of CuQpOffset Cb 、CuQpOffset Cr or CuQpOffset CbCr value.

[1007] The value of variable β′ is determined based on the quantization parameter Q derived as follows and specified in Table 8 - 18:

[1008] Q = Clip3(0, 63, Qp C +(slice_beta_offset_div2 << 1)) (8 - 1134)

[1009] where slice_beta_offset_div2 is the value of the syntax element slice_beta_offset_div2 of the slice containing sample q 0,0 .

[1010] The derivation of variable β is as follows:

[1011] β = β' * (1 << (BitDepth C - 8)) (8 - 1135)

[1012] Variable t C 's value is determined as specified in Table 8 - 18 for the quantization parameter Q derived as follows:

[1013] Q = Clip3(0, 65, Qp C + 2 * (bS - 1)+(slice_tc_offset_div2 << 1)) (8 - 1136)

[1014] where slice_tc_offset_div2 is the value of the syntax element slice_tc_offset_div2 of the slice containing sample q 0,0 .

[1015] Variable t C 's derivation is as follows:

[1016] t C = (BitDepth C < 10)? (t C '+ 2)>>(10 - BitDepth C ):t C ' * (1 << (BitDepth C - 8)) (8 - 1137)

[1017] When maxFilterLengthCbCr equals 1 and bS does not equal 2, maxFilterLengthCbCr is set to equal 0.

[1018] When maxFilterLengthCbCr equals 3, the following ordered steps are applied:

[1019] 1. The derivation of variables n1, and is as follows, where

[1020] n1 = (subSampleC == 2)? 1 : 3 (8 - 1138)

[1021]

[1022] 2. The variable d is set to be equal to (d0 + d1 + 1) >> 1

[1023] 3. Both variables dSam0 and dSam1 are set equal to 0.

[1024] 4. When d is less than β, the following ordered steps apply:

[1025] a. The variable dpq is set equal to 2 * dpq0.

[1026] b. The variable dSam0 is derived by calling the decision process for the chrominance sample specified in Clause 8.8.3.6.8 for the sample position (xCb + xBl, yCb + yBl), with sample values p 0,0 , p 3,0 , q 0,0 and q 3,0 , variables dpq, β, and t C as inputs, and the output is assigned to the decision dSam0.

[1027] c. The variable dpq is set equal to 2 * dpq1.

[1028] d. The variable dSam1 is modified as follows:

[1029] – If edgeType is equal to EDGE_VER, for the sample position (xCb + xBl, yCb + yBl + n1), call the decision process for the chrominance sample specified in Clause 8.8.3.6.8, where the sample values p 0,n1 , p 3,n1 , q 0,n1 and q 3,n1 , variables dpq, β, and tC are used as inputs, and the output is assigned to the decision dSam1.

[1030] – Otherwise (edgeType is equal to EDGE_HOR), for the sample position (xCb + xBl + n1, yCb + yBl), call the decision process for the chrominance sample specified in Clause 8.8.3.6.8, where the sample values p0, n1, p3, n1, q0, n1, and q3, n1, variables dpq, β, and t C are used as inputs, and the output is assigned to the decision dSam1.

[1031] 5. The variable maxFilterLengthCbCr is modified as follows:

[1032] – If dSam0 equals 1 and dSam1 equals 1, then maxFilterLengthCbCr is set to be equal to 3.

[1033] – Otherwise, maxFilterLengthCbCr is set to be equal to 1.

[1034] 8.8.3.6.4 Filtering Process for Chrominance Block Edges

[1035] This process is called only when ChromaArrayType is not equal to 0.

[1036] The inputs to this process include:

[1037] – The chrominance picture sample array recPicture,

[1038] – The chrominance position (xCb, yCb) of the top-left sample of the current chrominance coding block relative to the top-left chrominance sample of the current picture,

[1039] – The chrominance position (xBl, yBl) of the top-left sample of the current chrominance block relative to the top-left sample of the current chrominance coding block,

[1040] – The variable edgeType that specifies whether to filter the vertical edge (EDGE_VER) or the horizontal edge (EDGE_HOR),

[1041] – The variable maxFilterLengthCbCr that contains the maximum chrominance filter length,

[1042]

[1043] – The variable tC.

[1044] The output of this process is the modified chrominance picture sample array recPicture.

[1045] …

[1046] The values of p i and q i are derived as follows, where i = 0..maxFilterLengthCbCr and k = 0..maxK:

[1047] – If edgeType equals EDGE_VER, then the following applies:

[1048]

[1049]

[1050] – Otherwise (edgeType equals EDGE_HOR), the following applies:

[1051]

[1052]

[1053] Depending on the value of edgeType, the following applies:

[1054] If edgeType equals EDGE_VER, for each sample position (xCb + xBl, yCb + yBl + k), k = 0..maxK, apply the following ordered steps:

[1055] 1. Call the chrominance sample filtering process specified in Clause 8.8.3.6.9, with variables maxFilterLengthCbCr, sample values p i,k 、q i,k (i = 0..maxFilterLengthCbCr), positions (xCb + xBl - i - 1, yCb + yBl + k) and (xCb + xBl + i, yCb + yBl + k) (i = 0..maxFilterLengthCbCr – 1) and variable t C as inputs, and the filtered sample values pi’ and qi’..maxFilterLengthCbCr 1 as outputs.

[1056] 2. Replace the corresponding samples in the sample array recPicture with the filtered sample values p i ′ and q i ′, where i = 0..maxFilterLengthCbCr - 1, as follows:

[1057]

[1058]

[1059] – Otherwise (edgeType equals EDGE_HOR), for each sample position (xCb + xBl + k, yCb + yBl), k = 0..maxK, apply the following ordered steps:

[1060] 1. Call the chrominance sample filtering process specified in Clause 8.8.3.6.9, with variables maxFilterLengthCbCr, sample values p i,k 、q i,k(i = 0..maxFilterLengthCbCr), positions (xCb + xBl + k, yCb + yBl - i - 1) and (xCb + xBl + k, yCb + yBl + i), and variable t C As input, the filtered sample value p i ′ and q i ′ as output.

[1061] 2. The filtered sample values p i ′ and q i ′ replace the corresponding samples in the sample array recPicture as follows:

[1062]

[1063]

[1064] 5.11. Example #11

[1065] 8.8.3.6.3 Decision process for chroma block edges

[1066] …

[1067]

[1068]

[1069] 5.12 Example #12

[1070] 8.8.3.6.3 Decision process for chroma block edges

[1071] …

[1072]

[1073]

[1074] …

[1075] 5.13 Example #13

[1076] These examples are based on JVET-P2001-vE. Newly added text is marked with Bold Italic Underlined Deleted text is marked with Bold Underlined marked.

[1077] Decision process for chroma block edges

[1078] This process is called only when ChromaArrayType is not equal to 0.

[1079] The inputs to this process are:

[1080] – Chrominance picture sample array recPicture,

[1081] – Specify the chrominance position (xCb, yCb) of the top-left sample of the current chrominance coding / decoding block relative to the top-left chrominance sample of the current picture,

[1082] – Specify the chrominance position (xBl, yBl) of the top-left sample of the current chrominance block relative to the top-left sample of the current chrominance coding / decoding block,

[1083] – Variable edgeType that specifies whether to filter vertical edges (EDGE_VER) or horizontal edges (EDGE_HOR),

[1084] – Variable cIdx that specifies the color component index,

[1085] – Variable bS that specifies the boundary filtering strength,

[1086] – Variable maxFilterLengthP that specifies the maximum filter length,

[1087] – Variable maxFilterLengthQ that specifies the maximum filter length.

[1088] The output of this process is

[1089] – Modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1090] – Variable t C .

[1091] …

[1092] Variable Qp P is derived as follows:

[1093] – Luminance position (xTb P , xTb P ) is set to the position of the top-left luminance sample of the transform module containing sample p 0,0 relative to the top-left luminance sample of the picture.

[1094] – If TuCResMode[xTb P [yTb P equals 2, then Qp P is set to be equal to Qp' 0,0 of the transform block containing sample p CbCr .

[1095]

[1096] – Otherwise, if cIdx equals 1 Then Qp P is set to be equal to Qp’ of the transform block containing sample point p 0,0 . Cb .

[1097] – Otherwise, Qp P is set to be equal to Qp’ of the transform block containing sample point p 0,0 . Cr .

[1098]

[1099] The derivation of variable Qp Q is as follows:

[1100] – The luminance position (xTb Q, xTb Q ) is set to the position of the top-left luminance sample of the transform module containing sample point q 0,0 relative to the top-left luminance sample of the picture.

[1101] – If TuCResMode[xTb Q [yTb Q is equal to 2, then Qp Q is set to be equal to Qp’ of the transform block containing sample point q 0,0 . CbCr .

[1102]

[1103] – Otherwise, if cIdx is equal to 1 then Qp Q is set to be equal to Qp’ of the transform block containing sample point q 0,0 . Cb .

[1104] – Otherwise, Qp Q is set to be equal to Qp’ of the transform block containing sample point q 0,0 . Cr .

[1105]

[1106] The derivation of variable Qp C is as follows:

[1107] Qp C = (Qp Q - QpBdOffset + Qp P - QpBdOffset + 1) >> 1 (1321)

[1108] …

[1109] 5.14 Example #14

[1110] These examples are based on JVET - P2001 - vE. Newly added text is marked with Bold Italic Underlined Deleted text is marked with Bold Underlined marked.

[1111] Decision process for chroma block edges

[1112] This process is called only when ChromaArrayType is not equal to 0.

[1113] The inputs to this process are:

[1114] – Chroma picture sample array recPicture,

[1115] – Chroma position (xCb, yCb) of the top - left sample of the current chroma coding block relative to the top - left chroma sample of the current picture,

[1116] – Chroma position (xBl, yBl) of the top - left sample of the current chroma block relative to the top - left sample of the current chroma coding block,

[1117] – Variable edgeType that specifies whether to filter vertical edges (EDGE_VER) or horizontal edges (EDGE_HOR),

[1118] – Variable cIdx that specifies the color component index,

[1119] – Variable bS that specifies the boundary filtering strength,

[1120] – Variable maxFilterLengthP that specifies the maximum filter length,

[1121] – Variable maxFilterLengthQ that specifies the maximum filter length.

[1122] The outputs of this process are

[1123] – Modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1124] – Variable t C .

[1125] …

[1126] Derivation of variable Qp P is as follows:

[1127] – Luminance position (xTb P , xTbP ) is set to include the sample point p 0,0 The position of the top - left luminance sample point of the transform module containing the sample point p relative to the top - left luminance sample point of the picture.

[1128] – If TuCResMode[xTb P [yTb P equals 2, then Qp P is set to be equal to Qp’ of the transform block containing the sample point p 0,0 CbCr .

[1129]

[1130] – Otherwise, if cIdx equals 1 then Qp P is set to be equal to Qp’ of the transform block containing the sample point p 0,0 Cb .

[1131] – Otherwise, Qp P is set to be equal to Qp’ of the transform block containing the sample point p 0,0 Cr .

[1132]

[1133] The derivation of the variable Qp Q is as follows:

[1134] – The luminance position (xTb Q, xTb Q ) is set to the position of the top - left luminance sample point of the transform module containing the sample point q 0,0 relative to the top - left luminance sample point of the picture.

[1135] – If TuCResMode[xTb Q [yTb Q equals 2, then Qp Q is set to be equal to Qp’ of the transform block containing the sample point q 0,0 CbCr .

[1136]

[1137] – Otherwise, if cIdx equals 1 then Qp Q is set to be equal to Qp’ of the transform block containing the sample point q 0,0 Cb .

[1138] ​​​​​– Otherwise, Qp Q is set to be equal to Qp’ 0,0 of the transform block containing sample q Cr .

[1139]

[1140] The derivation of variable Qp C is as follows:

[1141] Qp C = (Qp Q - QpBdOffset + Qp P - QpBdOffset + 1) >> 1 (1321)

[1142] …

[1143] 5.15 Example #15

[1144] below Figure 17 shows the proposed control logic.

[1145] 7.3.2.6 Picture Header RBSP Syntax

[1146]

[1147]

[1148] 7.3.7.1 General Strip Header Syntax

[1149]

[1150]

[1151] 5.16 Example #16

[1152] 7.3.2.4 Picture Parameter Set RBSP Syntax

[1153]

[1154] 7.3.2.6 Picture Header RBSP Syntax

[1155]

[1156]

[1157] 7.3.7.1 General Strip Header Syntax

[1158]

[1159] 7.4.3.4 Picture Parameter Set RBSP Semantics

[1160] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for β and t C which are applied to the Cb component of the stripes of the reference PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the stripe header of the stripes of the reference PPS. The values of both pps_beta_offset_div2 and pps_tc_offset_div2 shall be in the range of -6 to 6, inclusive of the end values. When absent, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[1161] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for β and t C which are applied to the Cr component of the stripes of the reference PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the stripe header of the stripes of the reference PPS. The values of both pps_beta_offset_div2 and pps_tc_offset_div2 shall be in the range of -6 to 6, inclusive of the end values. When absent, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[1162] 7.4.3.6 Picture Header

[1163] pic_cb_beta_offset_div2 and pic_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for β and t C which are applied to the Cb component of the stripes associated with the PH. The values of pic_beta_offset_div2 and pic_tc_offset_div2 shall be in the range of -6 to 6, inclusive of the end values. When absent, the values of pic_beta_offset_div2 and pic_tc_offset_div2 are inferred to be equal to pps_beta_offset_div2 and pps_tc_offset_div2, respectively.

[1164] pic_cr_beta_offset_div2 and pic_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for β and t CThe deblocking parameter offsets (divided by 2) that are applied to the Cr component of the PH-related stripes. The values of pic_beta_offset_div2 and pic_tc_offset_div2 shall be in the range of -6 to 6, inclusive. When not present, the values of pic_beta_offset_div2 and pic_tc_offset_div2 are inferred to be equal to pps_beta_offset_div2 and pps_tc_offset_div2, respectively.

[1165] 7.4.8.1 General slice header semantics

[1166] silce_cb_beta_offset_div2 and silce_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) that are applied to the Cb component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When not present, the values of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to pic_beta_offset_div2 and pic_tc_offset_div2, respectively. C The deblocking parameter offsets (divided by 2) that are applied to the Cb component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When not present, the values of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to pic_beta_offset_div2 and pic_tc_offset_div2, respectively.

[1167] silce_cr_beta_offset_div2 and silce_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) that are applied to the Cb component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When not present, the values of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to pic_beta_offset_div2 and pic_tc_offset_div2, respectively. C The deblocking parameter offsets (divided by 2) that are applied to the Cb component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When not present, the values of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to pic_beta_offset_div2 and pic_tc_offset_div2, respectively.

[1168] 8.8.3.6.3 Decision process for chroma block edges

[1169] …

[1170] The value of the variable β′ is determined as specified in Table 41 based on the quantization parameter Q derived as follows:

[1171]

[1172] where slice_beta_offset_div2 is the value of the syntax element slice_beta_offset_div2 of the slice containing sample q 0,0 in the picture parameter set (PPS).

[1173] The derivation of variable β is as follows:

[1174] β = β′ * (1 << (BitDepth - 8)) (1323)

[1175] The value of variable t C ′ is determined based on the quantization parameter Q derived as follows as specified in Table 41:

[1176]

[1177] …

[1178] Example #17

[1179] This example is based on Example #15.

[1180] 7.3.2.4 Picture Parameter Set RBSP Syntax

[1181]

[1182] 7.3.7.1 General Slice Header Syntax

[1183]

[1184]

[1185] 7.4.3.4 Picture Parameter Set RBSP Semantics

[1186] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) for β and t C which are applied to the Cb component of the slices of the reference PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the slice header of the slices of the reference PPS. The values of pps_beta_offset_div2 and pps_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When not present, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[1187] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) for β and t CThe default deblocking parameter offset (divided by 2), which is applied to the Cr component of the slices of the reference PPS, unless the default deblocking parameter offset is overridden by the deblocking parameter offset present in the slice header of the slices of the reference PPS. The values of pps_beta_offset_div2 and pps_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When not present, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[1188] 7.4.8.1 General slice header semantics

[1189] silce_cb_beta_offset_div2 and silce_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of β and t C that are applied to the Cb component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When not present, the values of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to pps_beta_offset_div2 and pps_tc_offset_div2, respectively.

[1190] silce_cr_beta_offset_div2 and silce_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of β and t C that are applied to the Cb component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When not present, the values of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to pps_beta_offset_div2 and pps_tc_offset_div2, respectively.

[1191] 8.8.3.6.3 Decision process for chroma block edges

[1192] …

[1193] The value of the variable β′ is determined as specified in Table 41 based on the quantization parameter Q derived as follows:

[1194]

[1195] where slice_beta_offset_div2 is the value of the syntax element slice_beta_offset_div2 of the slice containing sample q 0,0 of the slice.

[1196] The derivation of variable β is as follows:

[1197] β = β′ * (1 << (BitDepth - 8)) (1323)

[1198] Variable t C ′s value is determined as specified in Table 41 for the quantization parameter Q derived as follows:

[1199]

[1200] …

[1201] 5.18 Example #18

[1202] This example is based on Example #17.

[1203] 7.4.3.4 Picture Parameter Set RBSP Semantics

[1204] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) for β and t C which are applied to the Cb component of the current PPS. The values of pps_beta_offset_div2 and pps_tc_offset_div2 shall both be in the range of -6 to 6, inclusive of the end values. When absent, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[1205] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) for β and t C which are applied to the Cr component of the current PPS. The values of pps_beta_offset_div2 and pps_tc_offset_div2 shall both be in the range of -6 to 6, inclusive of the end values. When absent, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[1206] 7.4.8.1 General Slice Header Semantics

[1207] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for β and t C which are applied to the Cb component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -6 to 6, inclusive of the end values.

[1208] slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for β and t C which are applied to the Cb component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -6 to 6, inclusive of the end values.

[1209] 8.8.3.6.1 Decision Process for Luma Block Edges

[1210] …

[1211] The value of variable β′ is determined as specified in Table 41 based on the quantization parameter Q derived as follows:

[1212]

[1213] where slice_beta_offset_div2 is the value of the syntax element slice_beta_offset_div2 of the slice containing sample q 0,0

[1214] The derivation of variable β is as follows:

[1215] β = β′ * (1 << (BitDepth - 8)) (1263)

[1216] Variable t C ′s value is determined as specified in Table 41 based on the quantization parameter Q derived as follows:

[1217]

[1218] …

[1219] 8.8.3.6.3 Decision Process for Chroma Block Edges

[1220] …

[1221] The value of variable β′ is determined as specified in Table 41 based on the quantization parameter Q derived as follows:

[1222] ​

[1223] where slice_beta_offset_div2 is the value of the syntax element slice_beta_offset_div2 of the slice containing sample q 0,0 for the current chroma coding block at position (x0, y0).

[1224] The derivation of variable β is as follows:

[1225] β = β′ * (1 << (BitDepth - 8)) (1323)

[1226] Variable t C ′ value is determined based on the quantization parameter Q derived as follows as specified in Table 41:

[1227]

[1228]

[1229] …

[1230] 5.19 Example #19

[1231] This example is related to ACT.

[1232] An intra_bdpcm_chroma_flag equal to 1 specifies that BDPCM is applied to the current chroma coding block at position (x0, y0), i.e., the transform is skipped and the intra chroma prediction mode is specified by intra_bdpcm_chroma_dir_flag. An intra_bdpcm_chroma_flag equal to 0 specifies that BDPCM is not applied to the current chroma coding block at position (x0, y0).

[1233] When intra_bdpcm_chroma_flag does not exist,

[1234] the variable BdpcmFlag[x][y][cIdx] is set to be equal to intra_bdpcm_chroma_flag, where x = x0..x0 + cbWidth – 1, y = y0..y0 + cbHeight – 1 and cIdx = 1..2.

[1235] An intra_bdpcm_chroma_dir_flag equal to 0 specifies that the BDPCM prediction direction is horizontal. An intra_bdpcm_chroma_dir_flag equal to 1 specifies that the BDPCM prediction direction is vertical.

[1236]

[1237] The variable BdpcmDir[x][y][cIdx] is set to be equal to intra_bdpcm_chroma_dir_flag, where x = x0..x0+cbWidth–1, y = y0..y0+cbHeight–1 and cIdx = 1..2.

[1238] Example #20

[1239] This example relates to QP derivation for deblocking.

[1240] 8.8.3.6.1 Decision process for luma block edges

[1241] The inputs to this process are:

[1242] – The picture sample array recPicture,

[1243] – The position (xCb, yCb) of the top-left sample of the current coding / decoding block relative to the top-left sample of the current picture,

[1244] – The position (xBl, yBl) of the top-left sample of the current block relative to the top-left sample of the current coding / decoding block,

[1245] – The variable edgeType that specifies whether to filter a vertical edge (EDGE_VER) or a horizontal edge (EDGE_HOR),

[1246] – The variable bS that specifies the boundary filter strength,

[1247] – The variable maxFilterLengthP that specifies the maximum filter length,

[1248] – The variable maxFilterLengthQ that specifies the maximum filter length.

[1249] The outputs of this process are:

[1250] – The variables dE, dEp, and dEq that contain the decision,

[1251] – The modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1252] – The variable t C .

[1253] …

[1254]

[1255] …

[1256] 8.8.3.6.3 Decision Process for Chroma Block Edges

[1257] This process is called only when ChromaArrayType is not equal to 0.

[1258] The inputs to this process are:

[1259] – The picture sample array recPicture,

[1260] – The position (xCb, yCb) of the top-left sample of the current coding block relative to the top-left sample of the current picture,

[1261] – The position (xBl, yBl) of the top-left sample of the current block relative to the top-left sample of the current coding block,

[1262] – The variable edgeType that specifies whether to filter a vertical edge (EDGE_VER) or a horizontal edge (EDGE_HOR),

[1263] – The variable cIdx that specifies the color component index,

[1264] – The variable bS that specifies the boundary filter strength,

[1265] – The variable maxFilterLengthP that specifies the maximum filter length,

[1266] – The variable maxFilterLengthQ that specifies the maximum filter length.

[1267] The outputs of this process are:

[1268] – The modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1269] – The variable t C .

[1270] …

[1271] The variable Qp P is derived as follows:

[1272] – The luma position (xTb P , xTb P ) is set to the position of the top-left luma sample of the transform module containing sample p 0,0 relative to the top-left luma sample of the picture.

[1273] – If TuCResMode[xTb P [yTb P is equal to 2, then QpP is set to be equal to Qp’ of the transform block containing sample point p 0,0 . CbCr

[1274] – Otherwise, if cIdx is equal to 1, then Qp P is set to be equal to Qp’ of the transform block containing sample point p 0,0 . Cb

[1275] – Otherwise, Qp P is set to be equal to Qp’ of the transform block containing sample point p 0,0 . Cr

[1276]

[1277] The derivation of variable Qp Q is as follows:

[1278] – The luminance position (xTb Q , xTb Q ) is set to the position of the top-left luminance sample of the transform module containing sample point q 0,0 relative to the top-left luminance sample of the picture.

[1279] – If TuCResMode[xTb Q [yTb Q is equal to 2, then Qp Q is set to be equal to Qp’ of the transform block containing sample point q 0,0 . CbCr

[1280] – Otherwise, if cIdx is equal to 1, then Qp Q is set to be equal to Qp’ of the transform block containing sample point q 0,0 . Cb

[1281] – Otherwise, Qp Q is set to be equal to Qp’ of the transform block containing sample point q 0,0 . Cr

[1282]

[1283] The derivation of variable Qp C is as follows:

[1284] Qp C = (Qp Q - QpBdOffset + Qp P - QpBdOffset + 1) >> 1(1321) ​​​​​​

[1285] 6. Example Implementations of the Disclosed Technology

[1286] Figure 12 is a block diagram of a video processing apparatus 1200. The apparatus 1200 can be used to implement one or more of the methods described herein. The apparatus 1200 can be embodied in a smart phone, a tablet computer, a computer, an Internet of Things (IoT) receiver, etc. The apparatus 1200 can include one or more processors 1202, one or more memories 1204, and video processing hardware 1206. The processor(s) 1202 can be configured to implement one or more of the methods described in this document. The memory(ies) 1204 can be used to store data and code for implementing the methods and techniques described herein. The video processing hardware 1206 can be used to implement some of the techniques described in this document in hardware circuitry and can be part of the processor 1202, partially or completely (e.g., a graphics processing unit core GPU or other signal processing circuitry).

[1287] In this document, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, during the conversion from a pixel representation of a video to a corresponding bitstream representation, a video compression algorithm can be applied, and vice versa. As defined by the syntax, the bitstream representation of the current video block can, for example, correspond to bits that are co-located or scattered at different positions within the bitstream. For example, a macroblock can be encoded based on the transformed and encoded error residual values and also using bits in the headers and other fields in the bitstream. Additionally, during the conversion, the decoder can parse the bitstream based on this determination, knowing that some fields may or may not be present, as described in the above solutions. Similarly, the encoder can determine whether to include or exclude certain syntax fields and can generate the bitstream representation accordingly by including or excluding the syntax fields from the bitstream representation.

[1288] It should be understood that by allowing the use of the techniques disclosed in this document, the disclosed methods and techniques will be beneficial to video encoder and / or decoder embodiments incorporated in video processing devices such as smart phones, laptop computers, desktop computers, and similar devices.

[1289] Figure 13 is a flowchart of an example method 1300 of video processing. Method 1300 includes, at 1310, performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundaries of the video unit such that when a chrominance quantization parameter (QP) table is used to derive the parameters of the deblocking filter, each chrominance QP value is processed through the chrominance QP table.

[1290] Figure 18FIG. 0 is a block diagram of an exemplary video codec system 100 that can utilize the techniques of the present invention.

[1291] As Figure 18 shown, video codec system 100 can include a source device 110 and a destination device 120. The source device 110 generates encoded video data that can be referred to as a video codec device. The destination device 120 can decode the encoded video data generated by the source device 110, which can be referred to as a video decoding device.

[1292] The source device 110 can include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.

[1293] The video source 112 can include sources such as a video capture device, an interface for receiving video data from a video content provider, and / or a computer graphics system for generating video data, or a combination of these sources. The video data can include one or more pictures. The video encoder 114 encodes the video data from the video source 112 to generate a bitstream. The bitstream can include a sequence of bits that form a codec representation of the video data. The bitstream can include coded pictures and associated data. A coded picture is a codec representation of a picture. The associated data can include a sequence parameter set, a picture parameter set, and other syntax structures. The I / O interface 116 can include a modulator / demodulator (modem) and / or a transmitter. The encoded video data can be directly sent to the destination device 120 via the I / O interface 116 over a network 130a. The encoded video data can also be stored on a storage medium / server 130b for access by the destination device 120.

[1294] The destination device 120 can include an I / O interface 126, a video decoder 124, and a display device 122.

[1295] The I / O interface 126 can include a receiver and / or a modem. The I / O interface 126 can obtain the encoded video data from the source device 110 or the storage medium / server 130b. The video decoder 124 can decode the encoded video data. The display device 122 can display the decoded video data to a user. The display device 122 can be integrated with the destination device 120, or can be external to the destination device 120, and the destination device 120 is configured to interface with an external display device.

[1296] The video encoder 114 and the video decoder 124 can operate according to video compression standards, such as the High Efficiency Video Coding (HEVC) standard, the Versatile Video Coding (VVC) standard, and other current and / or future standards.

[1297] Figure 19is a block diagram of an example of video encoder 200, which may be the video encoder 114 in the system 100 shown in Figure 18 Figure 114.

[1298] Video encoder 200 may be configured to perform any or all of the techniques of this disclosure. In Figure 19 an example, video encoder 200 includes multiple functional components. The techniques described in this disclosure may be shared among the various components of video encoder 200. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.

[1299] The functional components of video encoder 200 may include a partitioning unit 201, a prediction unit 202 that may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205, and an intra prediction unit 206, a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213, and an entropy coding unit 214.

[1300] In other examples, video encoder 200 may include more, fewer, or different functional components. In one example, prediction unit 202 may include an intra block copy (IBC) unit. The IBC unit may perform prediction in IBC mode, where at least one reference picture is the picture in which the current video block is located.

[1301] In addition, some components such as motion estimation unit 204 and motion compensation unit 205 may be highly integrated, but are shown separately in Figure 19 an example for explanatory purposes.

[1302] Partitioning unit 201 may partition a picture into one or more video blocks. Video encoder 200 and video decoder 300 may support various video block sizes.

[1303] Mode selection unit 203 may select, for example based on error results, an encoding / decoding mode - intra or inter - and provide the resulting intra or inter - encoded / decoded block to residual generation unit 207 to generate residual block data, and to reconstruction unit 212 to reconstruct the encoded block for use as a reference picture. In some examples, mode selection unit 203 may select a combination of intra and inter prediction (CIIP) mode, in which the prediction is based on an inter prediction signal and an intra prediction signal. In the case of inter prediction, mode selection unit 203 may also select the resolution of the motion vector for the block (e.g., sub - pixel or integer - pixel accuracy).

[1304] To perform inter prediction on a current video block, the motion estimation unit 204 may generate motion information for the current video block by comparing one or more reference frames from buffer 213 with the current video block. The motion compensation unit 205 may determine a predicted video block for the current video block based on motion information and decoded samples of pictures from buffer 213 other than the picture associated with the current video block.

[1305] The motion estimation unit 204 and the motion compensation unit 205 may perform different operations on the current video block, e.g., depending on whether the current video block is in an I-slice, a P-slice, or a B-slice.

[1306] In some examples, the motion estimation unit 204 may perform uni-directional prediction on the current video block, and the motion estimation unit 204 may search for a reference video block of the current video block in the reference pictures of list 0 or list 1. Then the motion estimation unit 204 may generate a reference index indicating the reference picture in list 0 or list 1 that contains the reference video block and a motion vector indicating a spatial displacement between the current video block and the reference video block. The motion estimation unit 204 may output the reference index, a prediction direction indicator, and the motion vector as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block for the current block based on the reference video block indicated by the motion information of the current video block.

[1307] In other examples, the motion estimation unit 204 may perform bi-directional prediction on the current video block. The motion estimation unit 204 may search for a reference video block of the current video block in the reference pictures of list 0 and may also search for another reference video block of the current video block in the reference pictures of list 1. Then the motion estimation unit 204 may generate a reference index indicating the reference picture in list 0 or list 1 that contains the reference video block and a motion vector indicating a spatial displacement between the current video block and the reference video block. The motion estimation unit 204 may output the reference index and the motion vector of the current video block as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block for the current video block based on the reference video block indicated by the motion information of the current video block.

[1308] In some examples, the motion estimation unit 204 may output complete motion information for the decoding process of the decoder.

[1309] In some examples, the motion estimation unit 204 may not output the complete set of motion information for the current video. Instead, the motion estimation unit 204 may signal the motion information of the current video block by referring to the motion information of another video block. For example, the motion estimation unit 204 may determine that the motion information of the current video block is similar enough to the motion information of an adjacent video block.

[1310] In one example, the motion estimation unit 204 may indicate a value in a syntax structure associated with the current video block, the value indicating to the video decoder 300 that the current video block has the same motion information as another video block.

[1311] In another example, the motion estimation unit 204 may identify another video block and a motion vector difference (MVD) in a syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. The video decoder 300 may use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.

[1312] As described above, the video encoder 200 may predictively signal motion vectors. Two examples of predictive signaling techniques that may be implemented by the video encoder 200 include advanced motion vector prediction (AMVP) and merge mode signaling.

[1313] The intra prediction unit 206 may perform intra prediction on the current video block. When the intra prediction unit 206 performs intra prediction on the current video block, the intra prediction unit 206 may generate prediction data for the current video block based on decoded samples of other video blocks in the same picture. The prediction data for the current video block may include a predicted video block and various syntax elements.

[1314] The residual generation unit 207 may generate residual data for the current video block by subtracting (e.g., indicated by a negative sign) the predicted video block of the current video block from the current video block. The residual data for the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block.

[1315] In other examples, the current video block may not have residual data for the current video block, such as in a skip mode, and the residual generation unit 207 may not perform a subtraction operation.

[1316] The transform processing unit 208 may generate one or more transform coefficient video blocks for the current video block by applying one or more transforms to the residual video block associated with the current video block.

[1317] After the transform processing unit 208 generates the transform coefficient video block associated with the current video block, the quantization unit 209 may quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block.

[1318] The inverse quantization unit 210 and the inverse transform unit 211 can respectively apply inverse quantization and inverse transform to the transformed coefficient video block to reconstruct the residual video block from the transformed coefficient video block. The reconstruction unit 212 can add the reconstructed residual video block to the corresponding samples of one or more predicted video blocks generated by the prediction unit 202 to generate a reconstructed video block associated with the current block for storage in the buffer 213.

[1319] After the reconstruction unit 212 reconstructs the video block, a loop filtering operation can be performed to reduce video block artifacts in the video block.

[1320] The entropy coding unit 214 can receive data from other functional components of the video encoder 200. When the entropy coding unit 214 receives data, the entropy coding unit 214 can perform one or more entropy coding operations to generate entropy-coded data and output a bitstream including the entropy-coded data.

[1321] Some embodiments of the disclosed techniques include making a decision or determination to enable a video processing tool or mode. In one example, when a video processing tool or mode is enabled, the encoder will use or implement the tool or mode in the processing of a video block, but may not necessarily modify the resulting bitstream based on the use of the tool or mode. That is, when a video processing tool or mode is enabled based on a decision or determination, the conversion from the video block to the bitstream representation of the video will use that video processing tool or mode. In another example, when a video processing tool or mode is enabled, the decoder will process the bitstream knowing that the bitstream has been modified based on the video processing tool or mode. That is, the conversion from the bitstream representation of the video to the video block will be performed using the video processing tool or mode enabled based on that decision or determination.

[1322] Figure 20 is a block diagram illustrating an example of a video decoder 300, and the video decoder 300 can be Figure 18 the video decoder 114 in the system 100 shown.

[1323] The video decoder 300 can be configured to perform any or all of the techniques of the present disclosure. In Figure 20 an example, the video decoder 300 includes multiple functional components. The techniques described in the present disclosure can be shared among various components of the video decoder 300. In some examples, a processor can be configured to perform any or all of the techniques described in the present disclosure.

[1324] In Figure 20In the example of, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. In some examples, the video decoder 300 may perform a decoding process that is generally inverse to the encoding process described for the video encoder 200( Figure 19 ).

[1325] The entropy decoding unit 301 may retrieve the encoded bitstream. The encoded bitstream may include entropy-coded video data (e.g., encoded video data blocks). The entropy decoding unit 301 may decode the entropy-coded video data, and the motion compensation unit 302 may determine motion information including motion vectors, motion vector precision, reference picture list indices, and other motion information from the entropy-decoded video data. The motion compensation unit 302 may determine this information, for example, by performing AMVP and merge modes.

[1326] The motion compensation unit 302 may generate motion-compensated blocks and may perform interpolation based on an interpolation filter. The identifier of the interpolation filter to be used with sub-pixel precision may be included in the syntax elements.

[1327] The motion compensation unit 302 may calculate the interpolation of sub-integer pixels of a reference block using the interpolation filter used by the video encoder 20 during the encoding of video blocks. The motion compensation unit 302 may determine the interpolation filter used by the video encoder 200 based on the received syntax information and use the interpolation filter to generate a prediction block.

[1328] The motion compensation unit 302 may use some syntax information to determine the size of the blocks of the frames and / or slices of the encoded video sequence, the partitioning information describing how each macroblock of a picture of the encoded video sequence is partitioned, the mode indicating how each partition is encoded, one or more reference frames (and reference frame lists) for each inter-coded block, and other information for decoding the encoded video sequence.

[1329] The intra prediction unit 303 may form a prediction block from spatially adjacent blocks using, for example, the intra prediction mode received in the bitstream. The inverse quantization unit 303 inverse quantizes (i.e., de-quantizes) the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 301. The inverse transform unit 303 applies an inverse transform.

[1330] The reconstruction unit 306 can add the residual block to the corresponding prediction block generated by the motion compensation unit 202 or the intra prediction unit 303 to form a decoded block. If necessary, a deblocking filter can also be applied to filter the decoded block to remove block effect artifacts. Then the decoded video block is stored in the buffer 307, which provides reference blocks for subsequent motion compensation / intra prediction and also generates the decoded video for presentation on a display device.

[1331] Figure 21 FIG. 1900 is a block diagram illustrating an example video processing system 1900 in which various techniques disclosed herein can be implemented. Various embodiments can include some or all of the components of system 1900. System 1900 can include an input 1902 for receiving video content. The video content can be received in a raw or uncompressed format, such as 8- or 10-bit multi-component pixel values, or can be in a compressed or encoded format. Input 1902 can represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, passive optical network (PON), etc., and wireless interfaces such as Wi-Fi or cellular interfaces.

[1332] System 1900 can include a codec component 1904, which can implement various encoding or decoding methods described in this document. The codec component 1904 can reduce the average bit rate of the video from the input 1902 to the output of the codec component 1904 to produce a coded representation of the video. Thus, codec techniques are sometimes referred to as video compression or video transcoding techniques. As represented by component 1906, the output of the codec component 1904 can be stored or transmitted via a connected communication. Component 1908 can use the stored or transmitted bitstream (or coded) representation of the video received at input 1902 to generate pixel values or a displayable video to be sent to the display interface 1910. The process of generating a user-visible video from the bitstream representation is sometimes referred to as video decompression. Additionally, although certain video processing operations are referred to as "codec" operations or tools, it should be understood that codec tools or operations are used at the encoder, and the corresponding decoding tools or operations opposite to the encoding result will be performed by the decoder.

[1333] Examples of peripheral bus interfaces or display interfaces can include Universal Serial Bus (USB), High-Definition Multimedia Interface (HDMI), or DisplayPort, etc. Examples of storage interfaces include SATA (Serial Advanced Technology Attachment), PCI, IDE interfaces, etc. The techniques described in this document can be implemented in various electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.

[1334] Figure 22It is a flowchart of an example method 2200 for video processing. Operation 2202 includes performing a conversion between a video unit of a video and a bitstream representation of the video, where the conversion includes applying a deblocking filter to at least some samples on the boundaries of the video unit, where a deblocking quantization parameter (QP) value used in the deblocking filter is determined according to a rule, and where the rule specifies whether the deblocking QP value of the video unit is equal to the dequantization QP value based on whether an adaptive color transform (ACT) mode is applied to the video unit.

[1335] In some embodiments of method 2200, when the ACT mode is applied to a video unit, a color space conversion is performed between the video unit and the residual value of the video unit. In some embodiments of method 2200, the rule stipulates that, in the case where the ACT mode is applied to a video unit, the deblocking QP value is based on the QP value of the video unit before applying the QP adjustment according to the ACT mode. In some embodiments of method 2200, the rule stipulates that, in the case where the ACT mode is not applied to a video unit, the deblocking QP value is equal to the dequantization QP value. In some embodiments of method 2200, the rule stipulates that, in the case where the ACT mode is not applied to a video unit and when a transform skip (TS) mode is not applied to the video unit, the deblocking QP value is equal to the dequantization QP value.

[1336] Figure 23 It is a flowchart of an example method 2300 for video processing. Operation 2302 includes performing a conversion between a video unit of a video and a bitstream representation of the video according to a rule, where the rule specifies that an adaptive color transform (ACT) mode and a block-based differential pulse codec modulation (BDPCM) codec tool can be used to codec the video unit in a mutually exclusive manner.

[1337] In some embodiments of method 2300, when the ACT mode is applied to a video unit, a color space conversion is performed between the video unit and the residual value of the video unit. In some embodiments of method 2300, when the BDPCM codec tool is applied to a video unit: during an encoding operation, sample differences are used to encode the quantization coefficients of the video unit, or during a decoding operation, sample differences are used to generate the quantization coefficients. In some embodiments of method 2300, the rule specifies that when the ACT mode is applied to a video unit, the BDPCM codec tool is not applied to the video unit of the luma video component. In some embodiments of method 2300, the rule specifies that when the ACT mode is applied to a video unit, the BDPCM codec tool is not applied to the video unit of the chroma video component. In some embodiments of method 2300, the rule specifies that when the ACT mode is applied to a video unit, the BDPCM codec tool is not applied to the video unit of the luma video component or the chroma video component. In some embodiments of method 2300, the rule specifies that when the BDPCM codec tool is applied to the video unit of the luma video component or the chroma video component, the ACT mode is not applied to the video unit.

[1338] Figure 24 is a flowchart of an example method 2400 of video processing. Operation 2402 includes determining whether to enable the block differential pulse codec modulation (BDPCM) codec tool for a video unit of a video based on whether the adaptive color transform (ACT) mode is enabled for the video unit in a conversion between the video unit of the video and a bitstream representation of the video. Operation 2404 includes performing the conversion based on the determination.

[1339] In some embodiments of method 2400, when the ACT mode is enabled for a video unit, a color space conversion is performed between the video unit and the residual value of the video unit. In some embodiments of method 2400, when the BDPCM codec tool is enabled for a video unit: during an encoding operation, sample differences are used to encode the samples of a video block without applying a transform, or during a decoding operation, the sample differences are used to generate the samples of the video block without applying an inverse transform. In some embodiments of method 2400, in response to the following, the BDPCM codec tool is enabled for the video unit of the chroma video component of the video: the ACT mode is enabled for a video block, the BDPCM codec tool is enabled for another video unit of the luma video component of the video, and an indication in the sequence parameter set (SPS) indicating that the BDPCM codec tool is enabled for the chroma video component of the video.

[1340] In some embodiments of method 2400, the BDPCM codec tool is disabled for video units of the chrominance video component of a video in response to: disabling the ACT mode for a video block, or disabling the BDPCM codec tool for another video unit of the luma video component of the video, or an indication in the sequence parameter set (SPS) that the BDPCM codec tool is not enabled for the chrominance video component of the video. In some embodiments of method 2400, the BDPCM codec tool is disabled for video units of the luma video component of a video in response to: enabling the ACT mode for a video block, an indication in the sequence parameter set (SPS) that the BDPCM codec tool is not enabled for the chrominance video component of the video, and the bitstream representation not including a syntax element indicating whether the BDPCM codec tool is enabled for video units of the luma video component. In some embodiments of method 2400, the ACT mode is not enabled for a video block in response to: disabling the BDPCM codec tool for video units of the luma video component of the video, and an indication in the sequence parameter set (SPS) that the BDPCM codec tool is not enabled for the chrominance video component of the video.

[1341] In some embodiments of method 2400, the BDPCM codec tool is disabled for video units of the luma video component of a video in response to: enabling the ACT mode for a video block, and an indication in the sequence parameter set (SPS) that the BDPCM codec tool is not enabled for the chrominance video component of the video, wherein the bitstream representation does not include a syntax element indicating whether the BDPCM codec tool is enabled for video units of the luma video component. In some embodiments of methods 2200-2400, a video unit includes a coding unit (CU), a prediction unit (PU), or a transform unit (TU). In some embodiments of methods 2200-2400, performing the transformation includes encoding the video into a bitstream representation. In some embodiments of methods 2200-2400, performing the transformation includes decoding the video from the bitstream representation. In some embodiments, a video decoding device includes a processor configured to implement techniques of embodiments related to methods 2200-2400. In some embodiments, a video encoding device includes a processor configured to implement techniques of embodiments related to methods 2200-2400. In some embodiments, a computer program product having computer instructions stored thereon, when the instructions are executed by a processor, causes the processor to implement techniques of embodiments related to methods 2200-2400. In some embodiments, a computer-readable medium stores a bitstream representation generated according to techniques of embodiments related to methods 2200-2400. In some embodiments, a video processing device for storing a bitstream representation, wherein the video processing device is configured to implement techniques of embodiments related to methods 2200-2400.

[1342] Some preferred embodiments can be described using the following clause-based format.

[1343] 1. A method for video processing, comprising: performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that when a chrominance quantization parameter (QP) table is used to derive parameters of the deblocking filter, each chrominance QP value is processed through the chrominance QP table.

[1344] 2. The method according to clause 1, wherein, after processing through the chrominance QP table, a chrominance QP offset is added to each chrominance QP value.

[1345] 3. The method according to any one of clauses 1-2, wherein the chrominance QP offset is added to the value output through the chrominance QP table.

[1346] 4. The method according to any one of clauses 1-2, wherein the chrominance QP offset is not considered as an input to the chrominance QP table.

[1347] 5. The method according to clause 2, wherein the chrominance QP offset is at the picture level or at the video unit level.

[1348] 6. A video processing method, comprising: performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, wherein the chrominance QP offset is at the picture / strip / slice / tile / sub-picture level.

[1349] 7. The method according to clause 6, wherein the chrominance QP offset used in the deblocking filter is associated with an encoding / decoding method applied at the boundary of the video unit.

[1350] 8. The method according to clause 7, wherein the encoding / decoding method is a joint chrominance residual coding (JCCR) method.

[1351] 9. A video processing method, comprising: performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, wherein information related to the same luma encoding / decoding unit is used in the deblocking filter and is used to derive the chrominance QP offset.

[1352] 10. The method according to clause 9, wherein the same luma encoding / decoding unit covers the corresponding luma samples at the central position of the video unit, wherein the video unit is a chrominance encoding / decoding unit.

[1353] 11. The method according to clause 9, wherein the scaling process is applied to a video unit, and wherein one or more parameters of the deblocking filter depend at least in part on the quantization / dequantization parameters of the scaling process.

[1354] 12. The method according to clause 11, wherein the quantization / dequantization parameters of the scaling process include a chrominance QP offset.

[1355] 13. The method according to any one of clauses 9 - 12, wherein the luma samples in the video unit are on the P side or the Q side.

[1356] 14. The method according to clause 13, wherein the information about the same luma coding / decoding unit depends on the relative position of the coding / decoding unit with respect to the same luma coding / decoding unit.

[1357] 15. A video processing method, comprising: performing a conversion between a video unit and a bitstream representation of the video unit, wherein during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and wherein an indication of enabling the chrominance QP offset is signaled in the bitstream representation.

[1358] 16. The method according to clause 15, wherein the indication is signaled conditionally in response to detecting one or more flags.

[1359] 17. The method according to clause 16, wherein the one or more flags are related to a JCCR enable flag or a chrominance QP offset enable flag.

[1360] 18. The method according to clause 15, wherein the indication is signaled based on a derivation.

[1361] 19. A video processing method, comprising: performing a conversion between a video unit and a bitstream representation of the video unit, wherein during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and wherein the chrominance QP offset used in the deblocking filter is the same whether a JCCR coding / decoding method is applied at the boundary of the video unit or a method different from the JCCR coding / decoding method is applied at the boundary of the video unit.

[1362] 20. A video processing method, comprising: performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, wherein a boundary strength (BS) of the deblocking filter is calculated without comparing a reference picture at a P-side boundary and / or a plurality of motion vectors (MVs) associated with the video unit with a reference picture at a Q-side and / or a plurality of motion vectors (MVs) associated with the video unit.

[1363] 21. The method according to clause 20, wherein the deblocking filter is disabled under one or more conditions.

[1364] 22. The method according to clause 21, wherein the one or more conditions are associated with a magnitude or threshold of a motion vector (MV).

[1365] 23. The method according to clause 22, wherein the threshold is associated with at least one of the following: i. the content of the video unit, ii. a message signaled in a DPS / SPS / VPS / PPS / APS / picture header / strip header / slice group header / largest coding unit (LCU) / coding unit (CU) / LCU row / LCU group / TU / PU block / video coding unit, iii. the position of a CU / PU / TU / block / video coding unit, iv. the coding mode of a block having samples along a boundary, v. a transform matrix applied to a block having samples along a boundary, vi. the shape or dimension of the video unit, vii. an indication of a color format, viii. a coding tree node, ix. a strip / slice group type and / or a picture type, x. a color component, xi. a temporal layer ID, or xii. a profile / level / tier of a standard.

[1366] 24. The method according to clause 20, wherein different QP offsets are used for TS-encoded video units and non-TS-encoded video units.

[1367] 25. The method according to clause 20, wherein the QP used in a luminance filtering step is related to the QP used in a scaling process of a luminance block.

[1368] The following items are preferably implemented by some embodiments. Additional features are shown in the list in the previous part, such as items 31-32.

[1369] 26. A video processing method, comprising: for a conversion between a video unit of a component of a video and a bitstream representation of the video, determining a size of a quantization group of the video unit based on a constraint rule specifying that a size must be greater than K, where K is a positive number; and performing the conversion based on the determination.

[1370] 27. The method according to clause 26, wherein the component is a chrominance component and K = 4.

[1371] 28. The method according to clause 26, wherein the component is a luminance component and K = 8.

[1372] 29. The method according to any one of clauses 1 - 28, wherein the conversion includes encoding the video into a bitstream representation.

[1373] 30. The method according to any one of clauses 1 - 28, wherein the conversion includes parsing and decoding the bitstream representation to generate the video.

[1374] 31. A video decoding apparatus, comprising a processor configured to implement the method according to one or more of clauses 1 to 30.

[1375] 32. A video encoding apparatus, comprising a processor configured to implement the method according to one or more of clauses 1 to 30.

[1376] In some embodiments, the following technical solutions may be preferably implemented.

[1377] 1. A video processing method (e.g., Figure 22 the method 2200 described therein), comprising: performing (2202) a conversion between a video unit of a video and a bitstream of the video, wherein the conversion includes applying a deblocking filter to at least some samples on a boundary of the video unit, wherein a deblocking quantization parameter (QP) value used in the deblocking filter is determined according to a rule, and wherein the rule specifies whether the deblocking QP value is equal to an inverse quantization QP value of the video unit based on whether an adaptive color transform (ACT) mode is applied to the video unit.

[1378] 2. The method according to solution 1, wherein when the ACT mode is applied to a video unit, a color space conversion is performed between the video unit and a residual value of the video unit.

[1379] 3. The method according to solution 1, wherein the rule specifies that, in a case where the ACT mode is applied to a video unit, the deblocking QP value is based on the QP value of the video unit before applying QP adjustment according to the ACT mode.

[1380] 4. The method according to solution 1, wherein the rule specifies that, in a case where the ACT mode is not applied to a video unit, the deblocking QP value is equal to the inverse quantization QP value.

[1381] 5. The method according to Solution 1, wherein the rule specifies that when the ACT mode is not applied to a video unit and when the transform skip (TS) mode is not applied to the video unit, the deblocking QP value is equal to the inverse quantization QP value.

[1382] 6. A video processing method, comprising: performing a conversion between a video unit of a video and a bitstream of the video according to a rule, wherein the rule specifies that an adaptive color transform (ACT) mode and a block-based differential pulse codec modulation (BDPCM) codec tool can be used to codec the video unit in a mutually exclusive manner.

[1383] 7. The method according to Solution 6, wherein when the ACT mode is applied to a video unit, a color space conversion is performed between the video unit and a residual value of the video unit.

[1384] 8. The method according to Solution 6, wherein when the BDPCM codec tool is applied to a video unit: during an encoding operation, a quantization coefficient of the video unit is encoded using a sample difference, or during a decoding operation, a quantization coefficient is generated using a sample difference.

[1385] 9. The method according to Solution 6, wherein the rule specifies that when the ACT mode is applied to a video unit, the BDPCM codec tool is not applied to a video unit of a luminance video component.

[1386] 10. The method according to Solution 6, wherein the rule specifies that when the ACT mode is applied to a video unit, the BDPCM codec tool is not applied to a video unit of a chrominance video component.

[1387] 11. The method according to Solution 6, wherein the rule specifies that when the ACT mode is applied to a video unit, the BDPCM codec tool is not applied to a video unit of a luminance video component or a chrominance video component.

[1388] 12. The method according to claim 6, wherein the rule specifies that when the BDPCM codec tool is applied to a video unit of a luminance video component or a chrominance video component, the ACT mode is not applied to the video unit.

[1389] 13. A video processing method (e.g., Figure 24 the method 2400 described in), comprising: for a conversion between a video unit of a video and a bitstream of the video, determining whether to enable a block differential pulse codec modulation (BDPCM) codec tool (2402) for the video unit based on whether an adaptive color transform (ACT) mode is enabled for the video unit; and performing the conversion (2404) based on the determination.

[1390] 14. The method according to solution 13, wherein when the ACT mode is enabled for a video unit, a color space conversion is performed between the video unit and the residual value of the video unit.

[1391] 15. The method according to solution 13, wherein when the BDPCM codec tool is enabled for a video unit: during an encoding operation, sample differences are used to encode the samples of a video block without applying a transform, or during a decoding operation, sample differences are used to generate the samples of a video block without applying an inverse transform.

[1392] 16. The method according to solution 13, wherein in response to the following, the BDPCM codec tool is enabled for a video unit of the chrominance video component of a video: the ACT mode is enabled for a video block, the BDPCM codec tool is enabled for another video unit of the luma video component of the video, and an indication in a sequence parameter set (SPS) that indicates that the BDPCM codec tool is enabled for the chrominance video component of the video.

[1393] 17. The method according to solution 13, wherein in response to the following, the BDPCM codec tool is disabled for a video unit of the chrominance video component of a video: the ACT mode is disabled for a video block, or the BDPCM codec tool is disabled for another video unit of the luma video component of the video, or an indication in a sequence parameter set (SPS) that indicates that the BDPCM codec tool is not enabled for the chrominance video component of the video.

[1394] 18. The method according to solution 13, wherein in response to the following, the BDPCM codec tool is disabled for a video unit of the luma video component of a video: the ACT mode is enabled for a video block, an indication in a sequence parameter set (SPS) that indicates that the BDPCM codec tool is not enabled for the chrominance video component of the video, and the bitstream does not include a syntax element indicating whether the BDPCM codec tool is enabled for the video unit of the luma video component.

[1395] 19. The method according to solution 13, wherein in response to the following, the ACT mode is not enabled for a video block: the BDPCM codec tool is disabled for a video unit of the luma video component of a video, and an indication in a sequence parameter set (SPS) that indicates that the BDPCM codec tool is not enabled for the chrominance video component of the video.

[1396] 20. The method according to solution 13, wherein, in response to the following, the BDPCM codec tool is disabled for the video units of the luma video component of the video: the ACT mode is enabled for the video block, and an indication in the sequence parameter set (SPS) indicating that the BDPCM codec tool is not enabled for the chroma video component of the video, wherein the bitstream does not include a syntax element indicating whether the BDPCM codec tool is enabled for the video units of the luma video component.

[1397] 21. The method according to any one of solutions 1 to 20, wherein the video unit includes a coding unit (CU), a prediction unit (PU), or a transform unit (TU).

[1398] 22. The method according to any one of solutions 1 to 21, wherein performing the conversion includes encoding the video into a bitstream.

[1399] 23. The method according to any one of solutions 1 to 21, wherein performing the conversion includes decoding the video from the bitstream.

[1400] 24. The method according to any one of solutions 1 to 21, wherein performing the conversion includes encoding the video into a bitstream representation; and the method further includes storing the bitstream in a non-transitory computer-readable recording medium.

[1401] 25. A method for storing a bitstream of a video, including: generating the bitstream of the video from the video units of the video, and storing the bitstream in a non-transitory computer-readable recording medium; wherein generating the bitstream includes applying a deblocking filter to at least some samples on the boundary of the video unit, wherein the deblocking quantization parameter (QP) value used in the deblocking filter is determined according to a rule, and wherein the rule specifies whether the deblocking QP value is equal to the inverse quantization QP value of the video unit is based on whether the adaptive color transform (ACT) mode is applied to the video unit.

[1402] 26. A video decoding device, including a processor configured to implement one or more of the methods described in solutions 1 to 23.

[1403] 27. A video encoding device, including a processor configured to implement one or more of the methods described in solutions 1 to 25.

[1404] 28. A computer program product having computer instructions stored thereon, which when executed by a processor, cause the processor to implement the method according to any one of solutions 1 to 25.

[1405] 29. A non-transitory computer-readable storage medium storing a bitstream generated according to any one of the methods described in solutions 1 to 23.

[1406] 30. A non-transitory computer-readable storage medium storing instructions that cause a processor to perform the method according to any one of Solutions 1 to 25.

[1407] 31. A video processing device for storing a bitstream, wherein the video processing device is configured to implement the method according to any one or more of Solutions 1 to 25.

[1408] The disclosed and other solutions, examples, embodiments, modules, and functional operations described in this application document can be implemented in digital electronic circuits, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or a combination of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, that is, one or more modules of computer program instructions encoded on a tangible and non-transitory computer-readable medium for execution by, or to control the operation of, a data processing device. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a storage device, a substance composition affecting a machine-readable propagated signal, or a combination of one or more of them. The term "data processing unit" or "data processing device" includes all devices, apparatuses, and machines for processing data, including, for example, programmable processors, computers, or multi-processors or groups of computers. In addition to the hardware, the device may also include code for creating an execution environment for the computer program, for example, code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, for example, a machine-generated electrical, optical, or electromagnetic signal, which is generated to encode information for transmission to a suitable receiver device.

[1409] A computer program (also referred to as a program, software, software application, script, or code) can be written in any form of programming language (including compiled or interpreted languages), and can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. The program can be stored in a portion of a file that holds other programs or data (for example, one or more scripts in a markup language document), in a single file dedicated to the program, or in multiple coordinated files (for example, files that store one or more modules, subroutines, or portions of code). A computer program can be deployed to be executed on one or more computers, which are located at one site or distributed across multiple sites and interconnected by a communication network.

[1410] The processes and logical flows described in this application document can be executed by one or more programmable processors that execute one or more computer programs to perform functions by operating on input data and generating output. The processing and logical flows can also be executed by special-purpose logic circuitry, and the apparatus can also be implemented as special-purpose logic circuitry, e.g., an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit).

[1411] For example, processors suitable for executing computer programs include general and special-purpose microprocessors, and any one or more of any type of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor that executes instructions and one or more storage devices that store the instructions and data. Generally, a computer will also include one or more mass storage devices for storing data, e.g., magnetic disks, magneto-optical disks, or optical disks, or is operatively coupled to one or more mass storage devices to receive data therefrom or transfer data thereto, or both. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable hard disks; magneto-optical disks; and CD ROM and DVD ROM disks. The processor and the memory can be supplemented by, or incorporated in, special-purpose logic circuitry.

[1412] Although this patent document contains many details, it should not be construed as limiting any invention or the scope of any claim, but rather as describing features of particular embodiments of a particular invention. Certain features described in the context of separate embodiments of this patent document can also be implemented in combination in a single embodiment. Conversely, the various functions described in the context of a single embodiment can also be implemented separately in multiple embodiments, or in any suitable sub-combination. Additionally, although the above features may be described as acting in certain combinations, and even initially claimed as such, in some cases, one or more features from a claimed combination can be removed from the combination, and the claimed combination can be directed to a sub-combination or a variant of a sub-combination.

[1413] Likewise, although the operations are depicted in the drawings in a particular order, this should not be construed as requiring that such operations be performed in the particular order shown or in sequential order to obtain the desired result, or that all illustrated operations be performed. Additionally, the separation of various system components in the embodiments described in this patent document should not be construed as requiring such separation in all embodiments.

[1414] Only some implementations and examples are described, and other implementations, enhancements, and variations can be made based on what is described and illustrated in this patent document.

Claims

1. A video processing method, comprising: During the conversion between a video unit of a video and the bitstream of the video, applying a deblocking filter to at least some samples on the boundary of the video unit, wherein a deblocking quantization parameter (QP) value used in the deblocking filter is determined according to a rule; and Performing the conversion based on the deblocking QP value, wherein the rule specifies that the relationship between the deblocking QP value and the inverse quantization QP value used in the quantization or inverse quantization process of the video unit is based on whether an adaptive color transform mode is applied to the video unit, wherein, in the adaptive color transform mode, for an encoding operation, a visual signal is converted from a first color domain to a second color domain, or for a decoding operation, the visual signal is converted from the second color domain to the first color domain, wherein the video unit is a chrominance coding / decoding block, and the rule specifies that when the adaptive color transform mode is applied to the chrominance coding / decoding block, a differential coding / decoding tool is not applied to the chrominance coding / decoding block, and wherein, in the differential coding / decoding mode, the difference between a quantization residual and a prediction of the quantization residual is used to represent the residual of samples of the chrominance coding / decoding block in the bitstream.

2. The method according to claim 1, wherein, the rule specifies that when the adaptive color transform mode is applied to the video unit, before applying QP adjustment according to the adaptive color transform mode, the deblocking QP value is derived based on the QP value, and the inverse quantization QP value is the QP value to which the QP adjustment is applied.

3. The method according to claim 1, wherein, the rule specifies that when the adaptive color transform mode is not applied to the video unit, the deblocking QP value is derived based on the inverse quantization QP value of the video unit.

4. The method according to claim 3, wherein, the rule specifies that when the adaptive color transform mode is not applied to the video unit, the deblocking QP value is equal to the inverse quantization QP value of the video unit.

5. The method according to claim 1, wherein, the rule specifies that when neither the adaptive color transform mode nor the transform skip (TS) mode is applied to the video unit, the deblocking QP value is derived based on the inverse quantization QP value of the video unit.

6. The method according to claim 5, wherein, the rule specifies that when neither the adaptive color transform mode nor the TS mode is applied to the video unit, the deblocking QP value is equal to the inverse quantization QP value of the video unit.

7. The method according to claim 1, wherein, a block-based differential pulse coding modulation representation is used to represent the difference.

8. The method according to claim 1, wherein, the conversion includes encoding the video into the bitstream.

9. The method according to claim 1, wherein, the conversion includes decoding the video from the bitstream.

10. An apparatus for processing video data, the apparatus comprising a processor and a non-transitory memory having instructions thereon, wherein, when the instructions are executed by the processor, the processor is caused to: apply a deblocking filter to at least some samples on a boundary of a video unit of a video during conversion between the video unit of the video and a bitstream of the video, wherein a deblocking quantization parameter (QP) value used in the deblocking filter is determined according to a rule; and perform the conversion based on the deblocking QP value, wherein the rule specifies that a relationship between the deblocking QP value and an inverse quantization QP value used in quantization or inverse quantization processing of the video unit is based on whether an adaptive color transform mode is applied to the video unit, and wherein, in the adaptive color transform mode, for an encoding operation, a visual signal is converted from a first color domain to a second color domain, or for a decoding operation, the visual signal is converted from the second color domain to the first color domain, wherein the video unit is a chrominance coding / decoding block, and the rule specifies that when the adaptive color transform mode is applied to the chrominance coding / decoding block, a differential coding / decoding tool is not applied to the chrominance coding / decoding block, and wherein, in a differential coding / decoding mode, a difference between a quantization residual and a prediction of the quantization residual is used to represent a residual of samples of the chrominance coding / decoding block in the bitstream.

11. The apparatus according to claim 10, wherein, the rule specifies that, in a case where the adaptive color transform mode is applied to the video unit, before applying QP adjustment according to the adaptive color transform mode, the deblocking QP value is derived based on a QP value, and the inverse quantization QP value is the QP value to which the QP adjustment is applied; or in a case where the adaptive color transform mode is not applied to the video unit, the deblocking QP value is derived based on the inverse quantization QP value of the video unit; or in a case where neither the adaptive color transform mode nor a transform skip (TS) mode is applied to the video unit, the deblocking QP value is derived based on the inverse quantization QP value of the video unit.

12. The apparatus according to claim 10, wherein, the difference is represented using a block-based differential pulse coding / decoding modulation representation.

13. A non-transitory computer-readable storage medium storing instructions that cause a processor to: apply a deblocking filter to at least some samples on a boundary of a video unit of a video during conversion between the video unit of the video and a bitstream of the video, wherein a deblocking quantization parameter (QP) value used in the deblocking filter is determined according to a rule; and perform the conversion based on the deblocking QP value, wherein, the rule specifies that a relationship between the deblocking QP value and an inverse quantization QP value used in quantization or inverse quantization processing of the video unit is based on whether an adaptive color transform mode is applied to the video unit, and In the adaptive color transformation mode, for an encoding operation, a visual signal is converted from a first color domain to a second color domain, or for a decoding operation, the visual signal is converted from the second color domain to the first color domain. The video unit is a chrominance coding / decoding block, and the rule specifies that when the adaptive color transformation mode is applied to the chrominance coding / decoding block, differential coding / decoding tools are not applied to the chrominance coding / decoding block, and In the differential coding / decoding mode, the difference between a quantized residual and a prediction of the quantized residual is used to represent the residual of samples of the chrominance coding / decoding block in the bitstream.

14. The non-transitory computer-readable storage medium according to claim 13, wherein, the rule specifies that in a case where the adaptive color transformation mode is applied to the video unit, before applying QP adjustment according to the adaptive color transformation mode, a deblocking QP value is derived based on a QP value, and the inverse quantization QP value is the QP value to which the QP adjustment is applied; or in a case where the adaptive color transformation mode is not applied to the video unit, the deblocking QP value is derived based on the inverse quantization QP value of the video unit; or in a case where neither the adaptive color transformation mode nor a transform skip (TS) mode is applied to the video unit, the deblocking QP value is derived based on the inverse quantization QP value of the video unit.

15. The non-transitory computer-readable storage medium according to claim 13, wherein, the difference is represented using a block-based differential pulse code modulation representation.

16. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method executed by a video processing device, wherein, the method includes: applying a deblocking filter to at least some samples on a boundary of a video unit of the video, wherein a deblocking quantization parameter (QP) value used in the deblocking filter is determined according to a rule; and generating the bitstream based on the deblocking QP value, wherein the rule specifies that a relationship between the deblocking QP value and an inverse quantization QP value used in quantization or inverse quantization processing of the video unit is based on whether the adaptive color transformation mode is applied to the video unit, and in the adaptive color transformation mode, for an encoding operation, a visual signal is converted from a first color domain to a second color domain, or for a decoding operation, the visual signal is converted from the second color domain to the first color domain, the video unit is a chrominance coding / decoding block, and the rule specifies that when the adaptive color transformation mode is applied to the chrominance coding / decoding block, differential coding / decoding tools are not applied to the chrominance coding / decoding block, and in the differential coding / decoding mode, the difference between a quantized residual and a prediction of the quantized residual is used to represent the residual of samples of the chrominance coding / decoding block in the bitstream.

17. The non-transitory computer-readable recording medium according to claim 16, wherein, the rule specifies that When the adaptive color transformation mode is applied to the video unit, before applying QP adjustment according to the adaptive color transformation mode, the deblocking QP value is derived based on the QP value, and the inverse quantization QP value is the QP value to which the QP adjustment is applied; or When the adaptive color transformation mode is not applied to the video unit, the deblocking QP value is derived based on the inverse quantization QP value of the video unit; or When neither the adaptive color transformation mode nor the transform skip (TS) mode is applied to the video unit, the deblocking QP value is derived based on the inverse quantization QP value of the video unit.

18. The non-transitory computer-readable recording medium according to claim 16,[[]] wherein,[[]] the difference is represented using a block-based differential pulse codec modulation representation.

19. A method for storing a bitstream of video,[[]] comprising:[[]] applying a deblocking filter to at least some samples on the boundary of a video unit of the video, wherein a deblocking quantization parameter (QP) value used in the deblocking filter is determined according to a rule; generating the bitstream based on the deblocking QP value; and storing the bitstream in a non-transitory computer-readable recording medium,[[]] wherein the rule specifies that the relationship between the deblocking QP value and the inverse quantization QP value used in the quantization or inverse quantization process of the video unit is based on whether the adaptive color transformation mode is applied to the video unit, and wherein, in the adaptive color transformation mode, for an encoding operation, a visual signal is converted from a first color domain to a second color domain, or for a decoding operation, the visual signal is converted from the second color domain to the first color domain, wherein the video unit is a chrominance codec block, and the rule specifies that when the adaptive color transformation mode is applied to the chrominance codec block, a differential codec tool is not applied to the chrominance codec block, and wherein, in the differential codec mode, the residual of the samples of the chrominance codec block is represented in the bitstream using the difference between the quantized residual and the prediction of the quantized residual.

Citation Information

Patent Citations

  • Determining quantization parameters for deblocking filtering for video coding

    US20130101031A1

  • QP derivation and offset for adaptive color transform in video coding

    US20160100167A1