Bitstream Syntax for Chrominance Coding and Decoding

By managing motion vectors in video encoding and decoding, the problem of insufficient compression ratio and complexity in the prior art is solved, and more efficient video processing is achieved.

CN114930818BActive Publication Date: 2025-06-24DOUYIN CO LTD

Patent Information

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

AI Technical Summary

Technical Problem

The existing video encoding and codec technology has shortcomings in compression ratio and complexity, making it difficult to effectively manage motion vectors, resulting in poor codec performance.

Method used

A method of managing motion vectors is proposed, by performing conversion between the video unit and the bitstream according to rules during video encoding and decoding, and determining whether to enable cross-component adaptive loop filtering (CC-ALF) and adaptive loop filtering (ALF) modes.

Benefits of technology

By optimizing motion vector management, the compression ratio of video encoding and decoding is improved and the complexity is reduced, achieving more efficient video processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114930818B_ABST
    Figure CN114930818B_ABST
Patent Text Reader

Abstract

A method for video processing, 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 whether the bitstream includes at least one of control flags for a chrominance block-based differential pulse code modulation (BDPCM) mode, a palette mode, or an adaptive color transform (ACT) mode based on a value of a chrominance array type of the video.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - reference to related applications

[0002] Under the provisions of the applicable Patent Law and / or the Paris Convention, this application is based on International Patent Application PCT / US2020 / 067655 filed on December 31, 2020, and timely claims the priority and benefits of International Patent Application No. PCT / CN2020 / 070001 filed on January 1, 2020. For all purposes of the law, the entire disclosure of the above - mentioned applications is incorporated herein by reference as part of the disclosure of this application. Technical field

[0003] This patent document relates to video encoding techniques, 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 video encoding and decoding schemes that allow for lower complexity or parallel implementation. Industry experts have recently proposed several new video codec tools, and tests are currently being conducted to determine their effectiveness. Summary of the invention

[0005] Devices, systems, and methods related to digital video encoding and decoding are described, and specifically, relate to the management of motion vectors. The described methods can be applied to existing video encoding and decoding standards (e.g., High - Efficiency Video Coding (HEVC) or Versatile Video Coding) and future video encoding 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 bitstream of the video according to a rule, wherein the rule specifies that whether to enable the cross - component adaptive loop filter (CC - ALF) mode and the adaptive loop filter (ALF) mode in the bitstream in a mutually independent manner to encode and decode 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 chrominance component of a video and a bitstream of the video, wherein the bitstream conforms to the format rule, and the format rule specifies that the bitstream includes a syntax element that indicates whether to enable cross - component filtering of the chrominance component for all stripes associated with a picture header only when the value of the chrominance array type is not equal to zero or the color format of the video is not 4:0:0.

[0008] 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 a coded representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that when a chrominance quantization parameter (QP) table is used to derive parameters for the deblocking filtering, individual chrominance QP values are processed through the chrominance QP table.

[0009] 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 a coded representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, where the chrominance QP offset is at the picture / strip / slice / tile / sub-picture level.

[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 a coded representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, where information related to the same luma coded unit is used in the deblocking filtering and is used to derive the chrominance QP offset.

[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 a coded representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, where an indication signaling the enabling of the use of the chrominance QP offset is signaled in the coded representation.

[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 a coded representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, where the chrominance QP offset used in the deblocking filtering is the same whether the 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.

[0013] 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 a coded representation of the video unit, wherein during the conversion, deblocking filtering is used at the boundary of the video unit, such that a chrominance QP offset is used in the deblocking filtering, wherein a boundary strength (BS) of the deblocking filtering is calculated without comparing a reference picture and / or a plurality of motion vectors (MVs) associated with the video unit at a P-side boundary with a reference picture of the video unit at a Q-side boundary.

[0014] In another example aspect, another method for video processing is disclosed. The method includes determining a size of a quantization group of a video unit for a conversion between the video unit of a component of a video and a coded representation of the video 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.

[0015] In another example aspect, another method for video processing is disclosed. The method includes performing a conversion between a video unit of a video and a bitstream of the video according to a rule, where the rule specifies whether the bitstream includes at least one of control flags for a chrominance-based differential pulse code modulation (BDPCM) mode, a palette mode, or an adaptive color transform (ACT) mode based on a value of a chrominance array type of the video.

[0016] Furthermore, in a representative aspect, an apparatus in a video system including a processor and a non-transitory memory having instructions thereon is disclosed. The instructions are run by the processor such that the processor implements any one or more of the disclosed methods.

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

[0018] In another representative aspect, a video encoding apparatus 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 1 An example of an overall processing flow of a block-based deblocking filtering process is shown.

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

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

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

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

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

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

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

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

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

[0031] Figure 11 Shows an example of using information decoded from a 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 diamond filtering.

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

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

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

[0039] Figure 18 Is a block diagram showing a video codec system according to some embodiments of the present disclosure.

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

[0041] Figure 20 Is a block diagram showing 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 Description

[0044] 1. Video Coding and Decoding of HEVC / H.265

[0045] Video coding and decoding standards have mainly evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 video, and the two organizations jointly produced H.262 / MPEG-2 video and H.264 / MPEG-4 Advanced Video Coding (AVC) and H.265 / HEVC standards. Since H.262, video coding and decoding standards have been based on a hybrid video coding and decoding structure, in which temporal prediction plus transform coding is utilized. To explore future video coding and 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 applied them to a reference software called the Joint Exploration Model (JEM). In April 2018, the Joint Video Exploration Team (JVET) between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) was established to work on the VVC standard with the goal of reducing the bit rate by 50% compared to HEVC.

[0046] 2.1. Deblocking Scheme in HEVC

[0047] 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 both 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.

[0048] Figure 1 Shows the overall processing flow of the deblocking filtering process. 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 .

[0049] 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, is always included in the filtering because the CU boundary is also always 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 are included in the filtering. An exception is that when the PU boundary is inside the TU, the boundary is not filtered.

[0050] 2.1.1. Boundary Strength Calculation

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

[0052] Let P and Q be defined as the blocks included 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 Shows how to calculate the Bs value based on the intra-frame coding / decoding mode, the presence of non-zero transform coefficients and motion information, reference pictures, the number of motion vectors, and the motion vector difference.

[0053] Bs is calculated on a 4x4 block basis, but it is remapped to an 8x8 grid. The maximum value of the two Bs values corresponding to 8 pixels consisting of a row in the 4×4 grid is selected as the Bs of the boundary in the 8×8 grid.

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

[0055] 2.1.2. β and tC Decision

[0056] Based on the luminance quantization parameters QP of the P and Q blocks respectively P and QP Q to derive the filtering on / off decision, strong and weak filtering selection, and the thresholds β and t included in the weak filtering process C . The Q used to derive β and t C is calculated as follows.

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

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

[0059] Table 1 derives the threshold variables β and t from the input Q C

[0060] 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

[0061] 2.1.3. Filtering ON / OFF Decision for 4 Rows

[0062] The filtering ON / OFF decision is completed for every four rows as a unit. Figure 4 The pixels included in the filtering ON / OFF decision are shown. Six pixels in the two red boxes of the first four rows are used to determine the filtering ON / OFF for the 4 rows. Six pixels in the two red boxes of the second 4 rows are used to determine the filtering ON / OFF for the second 4 rows.

[0063] If dp0 + dq0 + dp3 + dq3 < β, then the filtering for the first four rows is turned on, and the strong / weak filtering selection process is applied. Each variable is derived as follows.

[0064] dp0 = |p 2,0 –2*p 1,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 |,

[0065] 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 |,

[0067] dq7 = |q2,7 –2*q 1,7 +q 0,7 |

[0068] If the conditions are not met, no filtering is done for the first four lines. 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.

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

[0070] 2.1.4. Strong / Weak Filtering Selection for Four Lines

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

[0072] 1) 2*(dp0 + dq0) < (β >> 2), |p30 – p00| + |q00 – q30| < (β >> 3) and |p00 – q00| < (5*t C +1) >> 1

[0073] 2) 2*(dp3 + dq3) < (β >> 2), |p33 – p03| + |q03 – q33| < (β >> 3) and |p03 – q03| < (5*t C +1) >> 1

[0074] Similarly, if the following two conditions are met, strong filtering is used to filter the second four lines. Otherwise, weak filtering is used.

[0075] 1) 2*(dp4 + dq4) < (β >> 2), |p34 – p04| + |q04 – q34| < (β >> 3) and |p04 – q04| < (5*t C +1) >> 1

[0076] 2) 2*(dp7 + dq7) < (β >> 2), |p37 – p07| + |q07 – q37| < (β >> 3) and |p07 – q07| < (5*t C +1) >> 1

[0077] 2.1.4.1. Strong Filtering

[0078] For strong filtering, the filtered pixel values are obtained through the following equations. It should be noted that three pixels are modified by using four pixels as the input for each P and Q block respectively.

[0079] p0’ = (p2 + 2 * p1 + 2 * p0 + 2 * q0 + q1 + 4) >> 3

[0080] q0’ = (p1 + 2 * p0 + 2 * q0 + 2 * q1 + q2 + 4) >> 3

[0081] p1’ = (p2 + p1 + p0 + q0 + 2) >> 2

[0082] q1’ = (p0 + q0 + q1 + q2 + 2) >> 2

[0083] p2’ = (2 * p3 + 3 * p2 + p1 + p0 + q0 + 4) >> 3

[0084] q2’ = (p0 + q0 + q1 + 3 * q2 + 2 * q3 + 4) >> 3

[0085] 2.1.4.2. Weak filtering

[0086] Define Δ as follows.

[0087] Δ = (9 * (q0 – p0) – 3 * (q1 – p1) + 8) >> 4

[0088] When abs(Δ) is less than tC * 10,

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

[0090] p0’ = Clip1 Y (p0 + Δ)

[0091] q0’ = Clip1 Y (q0 - Δ)

[0092] If dEp1 equals 1,

[0093] Δp = Clip3(-(t C >> 1), t C >> 1, (((p2 + p0 + 1) >> 1) – p1 + Δ) >> 1)

[0094] p1’ = Clip1 Y (p1 + Δp)

[0095] If dEq1 equals 1,

[0096] Δq = Clip3(-(t C >> 1), tC >>1,(((q2+q0+1)>>1)–q1–Δ)>>1)

[0097] q1' = Clip1 Y (q1 + Δq)

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

[0099] 2.1.4.3. Chrominance Filtering

[0100] The Bs of chrominance filtering inherits from luma. If Bs > 1 or if there are coded chrominance coefficients, chrominance filtering is performed. There is no other filtering decision. And only one filter is applied to chrominance. The filtering selection process for chrominance is not used. The filtered sample values p0' and q0' are derived as follows.

[0101] Δ = Clip3(-t C , t C ,((((q0 – p0) << 2) + p1 – q1 + 4) >> 3))

[0102] p0' = Clip1 C (p0 + Δ)

[0103] q0' = Clip1 C (q0 - Δ)

[0104] 2.2 Deblocking Scheme in VVC

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

[0106] a) The filtering strength of deblocking filtering depends on the average luma level of the reconstructed samples.

[0107] b) The deblocking tC table is extended and adapted to 10-bit video

[0108] c) 4x4 grid deblocking for luma

[0109] d) Stronger deblocking filtering for luma

[0110] e) Stronger deblocking filtering for chrominance

[0111] f) Deblocking filtering for sub-block boundaries

[0112] g) Deblocking decision adapting to small differences in motion

[0113] Figure 5 The flowchart of the deblocking filtering process in VVC for the coding unit is depicted.

[0114] 2.2.1. Filtering strength depends on the reconstructed average luminance

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

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

[0117] where, for sample values p i,k and q i,k for i = 0..3 and k = 0 and 3 are derived as shown in ______. 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 .

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

[0119] where Qp Q and Qp P represent the quantization parameters of the coding / decoding units containing samples q 0,0 and p 0,0 respectively. In the current VVC, this method is only applied to the luminance deblocking process.

[0120] 2.2.2. 4x4 Deblocking Grid for Luminance

[0121] HEVC uses an 8×8 deblocking grid for both luminance and chrominance. In VTM6, a 4x4 grid deblocking for luminance boundaries is introduced to handle the blocking artifacts from rectangular transform shapes. Parallel-friendly luminance deblocking on the 4×4 grid is achieved by restricting the number of samples to be deblocked to 1 sample per side of the vertical luminance boundary (where one side has a width of 4 or less) or 1 sample per side of the horizontal luminance boundary (where one side has a height of 4 or less).

[0122] 2.2.3. Boundary Strength Derivation for Luminance

[0123] The detailed boundary strength derivation can be found in Table 2. Check the conditions in Table 2 in sequence.

[0124] Table 2 Boundary Strength Derivation

[0125]

[0126]

[0127] 2.2.4. Stronger Deblocking Filter for Luminance

[0128] When the samples on either side of the boundary belong to a large block, bilinear filtering is proposed. When the width of the vertical edge >= 32 and when the height of the horizontal edge >= 32, the samples belonging to the large block are defined.

[0129] The bilinear filtering is listed as follows.

[0130] Then, the block boundary samples pi for i = 0 to Sp - 1 and 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 )*P s +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] where the tcPD i and tcPD j terms are the position - dependent clipping described in Section 2.2.5, and g j , f i , Middle s,t , P s and Q s are given as follows:

[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 Condition1, Condition2, and Condition3 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, which are represented by the variables bSidePisLargeBlk and bSideQisLargeBlk respectively. bSidePisLargeBlk and bSideQisLargeBlk are defined as follows.

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

[0142] bSideQisLargeBlk = ((the edge type is vertical and q0 belongs to a CU with a width >= 32) || (the edge type is horizontal and q0 belongs to a CU with a height >= 32))? TRUE : FALSE

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

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

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

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

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

[0148] dp0 = (dp0 + Abs(p5, 02 * P4, 0 + p3, 0) + 1) >> 1

[0149] dp3 = (dp3 + Abs(p5, 32 * P4, 3 + p3, 3) + 1) >> 1

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

[0151] dq0 = (dq0 + Abs(q5,02 * Q4,0 + q3,0) + 1) >> 1

[0152] dq3 = (dq3 + Abs(q5,32 * Q4,3 + q3,3) + 1) >> 1

[0153] Then, derive dpq0, dpq3, dp, dq, and d 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 Condition1 and Condition2 are valid, check if any block uses sub - blocks: If (bsidepislageblk)

[0158] If (mode block P == SUBBLOCKMODE)

[0159] Sp = 5

[0160] Otherwise

[0161] Sp = 7

[0162] Otherwise

[0163] Sp = 3

[0164] If (bSideQisLargeBlk)

[0165] If (mode block Q == SUBBLOCKMODE)

[0166] Sq = 5

[0167] Otherwise

[0168] Sq = 7

[0169] Otherwise

[0170] Sq = 3

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

[0172] In the Condition3StrongFilterCondition, the following variables are derived:

[0173] As derived in HEVC for dpq.

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

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

[0176] If (Sp == 5)

[0177] sp3 = (sp3 + Abs(p5 - p3) + 1) >> 1

[0178] Otherwise

[0179] sp3 = (sp3 + Abs(p7 - p3) + 1) >> 1

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

[0181] If (q side is greater than or equal to 32)

[0182] If (Sq == 5)

[0183] sq3 = (sq3 + Abs(q5 - q3) + 1) >> 1

[0184] Otherwise

[0185] sq3 = (sq3 + Abs(q7 - q3) + 1) >> 1

[0186] As derived 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

[0187] Figure 6 A flowchart describing the luminance deblocking filtering process is presented.

[0188] 2.2.6. Strong Deblocking Filtering for Chrominance

[0189] The following is defined for strong deblocking filtering of chrominance:

[0190] p2′ = (3 * p3 + 2 * p2 + p1 + p0 + q0 + 4) >> 3

[0191] p1′ = (2 * p3 + p2 + 2 * p1 + p0 + q0 + q1 + 4) >> 3

[0192] p0' = (p3 + p2 + p1 + 2 * p0 + q0 + q1 + q2 + 4) >> 3

[0193] The proposed chroma filtering performs deblocking on a 4×4 chroma sample grid.

[0194] 2.2.7. Chroma Deblocking Control

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

[0196] Figure 7 A flowchart depicting the chroma deblocking filtering process is shown.

[0197] 2.2.8. Position-Dependent Clipping

[0198] The proposal also introduces position-dependent clipping tcPD, which is applied to the output samples of the luma filtering process that includes strong and long filtering of 7, 5, and 3 samples at the modified boundaries. Assuming a quantization error distribution, the proposal increases the clipping value of samples expected to have higher quantization noise, thus expecting a larger deviation between the reconstructed sample value and the true sample value.

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

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

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

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

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

[0204] For P or Q boundaries filtered with short symmetric filtering, a lower magnitude of position-dependent threshold is applied:

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

[0206] After defining the thresholds, the filtered p'i and q'i sample values are clipped according to the tcP and tcQ clipping values:

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

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

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

[0210] 2.2.9. Sub - block Deblocking Adjustment

[0211] To achieve parallel - friendly deblocking using both long filtering and sub - block deblocking, long filtering 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 for long filtering. Additionally, the sub - block deblocking is adjusted such that the sub - block boundaries on the 8×8 grid near the CU or implicit TU boundary are restricted to modifying at most two samples on each side.

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

[0213] if (modeBlockQ == SUBBLOCKMODE && edge!= 0) {

[0214] if (!(implicitTU && (edge == (64 / 4))))

[0215] if (edge == 2 || edge == (orthogonalLength - 2) || edge == (56 / 4) || edge == (72 / 4))

[0216] Sp = Sq = 2;

[0217] else

[0218] Sp = Sq = 3;

[0219] else

[0220] Sp = Sq = bSideQ is Large Blk? 5 : 3

[0221] }

[0222] Edges equal to 0 correspond to CU boundaries, edges equal to 2 or equal to orthogonalLength - 2 correspond to sub - block boundaries from CU boundaries, such as 8 samples, etc. If implicit partitioning of TUs is used, then the implicit TU is true. Figure 8 A flowchart showing the determination process of TU boundaries and sub - PU boundaries is presented.

[0223] When the horizontal boundary is aligned with the CTU boundary, the filtering limit of the horizontal boundary is Sp = 3 for luminance, and Sp = 1 and Sq = 1 for chrominance.

[0224] 2.2.10. Deblocking Decision for Adaptation to Smaller Differences in Motion

[0225] When the difference of at least one motion vector component between blocks on the corresponding side of the boundary 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 enable the elimination of blocking artifacts originating from boundaries between inter - prediction units with smaller differences in motion vectors.

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

[0227] 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 multiplied by the CU height is equal to or greater than 64), and if both the CU width and CU height are less than 128 luminance samples, an additional flag is signaled to indicate whether the current CU applies the combined inter / intra - prediction (CIIP) mode. As the name implies, CIIP prediction combines inter - prediction signaling with intra - prediction signaling. The same inter - prediction process applied to the regular Merge mode is used to derive the inter - prediction signaling P in the CIIP mode inter ; and the intra - prediction signaling P intra is derived after the regular intra - prediction process using the planar mode. Then, weighted averaging is used to combine the intra - and inter - prediction signaling, where the calculation of the weight value depends on the encoding / decoding modes of the top and left neighboring blocks, as follows:

[0228] – If the top neighbor is available and is intra - encoded / decoded, then set isIntraTop to 1, otherwise set isIntraTop to 0;

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

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

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

[0232] – Otherwise, set wt to 1.

[0233] The CIIP prediction is formed as follows:

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

[0235] 2.4. Chrominance QP Table Design in VTM-6.0

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

[0237] 2.5. Transform Skip (TS)

[0238] As in HEVC, the residual of a block can be coded and decoded in the transform skip mode. To avoid redundancy in syntax coding, 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 for MTS in JEM4, which indicates 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.

[0239] In addition, for transform skip blocks, the minimum allowable quantization parameter (QP) is defined as 6

[0240] * (internalBitDepth – inputBitDepth) + 4.

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

[0242] VVC Draft 6 supports the mode where chrominance residuals are jointly encoded and decoded. The use (activation) of the joint chrominance encoding and decoding 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 chrominance CBFs of the TU are equal to 1, then the flag tu_joint_cbcr_residual_flag exists. In the PPS and slice header, chrominance QP offset values are signaled for the joint chrominance residual encoding and decoding mode, to be different from the normal chrominance QP offset values signaled for the normal chrominance residual encoding and decoding mode. These chrominance QP offset values are used to derive the chrominance QP values of those blocks encoded and decoded using the joint chrominance residual encoding and decoding mode. When the corresponding joint chrominance encoding and decoding mode (Mode 2 in Table 3) is active in the TU, during quantization and decoding of this TU, this chrominance QP offset is added to the applied luminance-derived chrominance QP. For other modes (Mode 1 and 3 in Table 3), the chrominance QP is derived in the same way as for traditional Cb or Cr blocks. Table 3 describes the reconstruction process of chrominance residuals (resCb and resCr) from the transmitted transform block. 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 considering information such as tu_cbf_cb, tu_cbf_cr, and CSign (which is the sign value specified in the slice header).

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

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

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

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

[0247] then the joint residual is determined as follows

[0248] resJointC[x][y] = (4*resCb[x][y] + 2*CSign*resCr[x][y]) / 5. · Otherwise (the mode is equal to 3, i.e., a single residual, reconstructed Cr = C, Cb = (CSign*C) / 2), then the joint residual is determined as follows

[0249] resJointC[x][y] = (4 * resCr[x][y] + 2 * CSign * resCb[x][y]) / 5. Reconstruction of chrominance residuals in Table 3. The value CSign is the sign value (+1 or –1) specified in the slice header, and resJointC[][] is the transmitted residual.

[0250]

[0251]

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

[0253] The corresponding specifications are as follows:

[0254] 8.7.1 Derivation Process of Quantization Parameter

[0255] Variable Qp Y The derivation is as follows:

[0256] Qp Y =

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

[0258] Luminance quantization parameter Qp' Y The derivation is as follows:

[0259] Qp' Y = Qp Y + QpBdOffset Y (8 - 934)

[0260] When ChromaArrayType is not equal to 0 and treeType is equal to SINGLE_TREE or DUAL_TREE_CHROMA, the following conditions apply:

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

[0262] – variable qP Cb 、qP Cr and qP CbCr The derivation is as follows:

[0263] qPi Chroma = Clip3(-QpBdOffset C , 63, Qp Y )

[0264] (8 - 935)

[0265] qPi Cb = ChromaQpTable[0][qPi Chroma

[0266] (8 - 936)

[0267] qPi Cr = ChromaQpTable[1][qPi Chroma

[0268] (8 - 937)

[0269] qPi CbCr = ChromaQpTable[2][qPi Chroma

[0270] (8 - 938)

[0271] – For the chroma quantization parameters of the Cb and Cr components, Qp′ Cb and Qp′ Cr and the joint Cb - Cr encoding / decoding Qp′ CbCr The derivation is as follows:

[0272] Qp′ Cb = Clip3(-QpBdOffset C , 63, qP Cb + pps_cb_qp_offset + slice_cb_qp_

[0273] offset + CuQpOffset Cb )

[0274] + QpBdOffset C (8 - 939)

[0275] Qp′ Cr = Clip3(-QpBdOffset C , 63, qP Cr ​​​+pps_cr_qp_offset+slice_cr_qp_off

[0276] set+CuQpOffset Cr )

[0277] +QpBdOffset C (8-940)

[0278] Qp′ CbCr =Clip3(-QpBdOffset C ,63,qP CbCr +pps_cbcr_qp_offset+slice_cbcr

[0279] _qp_offset+CuQpOffset CbCr )

[0280] +QpBdOffset C (8-941)

[0281] 8.7.3 Scaling Process of Transform Coefficients

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

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

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

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

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

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

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

[0289] The quantization parameter qP is derived as follows:

[0290] – If cIdx is equal to 0 and transform_skip_flag[xTbY][yTbY] is equal to 0, then it is applied as follows:

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

[0292] – Otherwise, if cIdx is equal to 0 (and transform_skip_flag[xTbY][yTbY] is equal to 1), then apply as follows:

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

[0294] – Otherwise, if TuCResMode[xTbY][yTbY] is equal to 2, then apply as follows:

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

[0296] – Otherwise, if cIdx is equal to 1, then apply as follows:

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

[0298] – Otherwise (cIdx is equal to 2), then apply as follows:

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

[0300] 2.7. Cross-Component Adaptive Loop Filtering (CC-ALF)

[0301] The Figure 14A following shows the placement of CC-ALF relative to other loop filters. CC-ALF operates by applying a linear diamond filter ( Figure 14B ) to the luma channel for each chroma component, denoted as

[0302]

[0303] where

[0304] (x, y) is the refined chroma component i position

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

[0306] S i is the filtering support in luma for chroma component i

[0307] c i (x0, y0) represents the filter coefficient

[0308] Key characteristics of the CC-ALF process include:

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

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

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

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

[0313] · The application of CC-ALF filtering is controlled by the variable block size and signaled by the context decoding flags received for each sample block. The block size and the CC-ALF enable flag are received at the slice level for each chrominance component.

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

[0315] 2.8 Derivation process of quantization parameter

[0316] The QP is derived based on the neighboring QP and the decoded delta QP. The text related to QP derivation in JVET-P2001-vE is given below.

[0317] The inputs to this process are:

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

[0319] – The variable cbWidth, specifying the width of the current coded block in luminance samples,

[0320] – The variable cbHeight, specifying the height of the current coded block in luminance samples,

[0321] – The variable treeType, specifying whether to use a single tree (SINGLE_TREE) or a dual tree to partition the coded tree nodes, and when using a dual tree, whether the current component being processed is luminance (DUAL_TREE_LUMA) or chrominance (DUAL_TREE_CHROMA).

[0322] In this process, the luminance quantization parameter Qp′Y and the chrominance quantization parameters Qp′Cb, Qp′Cr, and Qp′CbCr are derived.

[0323] 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.

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

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

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

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

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

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

[0330] – The current quantization group is the first quantization group in the CTB row of the slice, and

[0331] entropy_coding_sync_enabled_flag is equal to 1.

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

[0333] 2. Invoke 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, and cIdx to be equal to 0 as inputs, and assign the output to availableA. The variable qPY_A is derived as follows:

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

[0335] – availableA is equal to FALSE.

[0336] – The CTB containing the luma coding / decoding block covering the luma position (xQg-1, yQg) is not equal to the CTB containing the

[0337] current luma coding / decoding block at (xCb, yCb), i.e., all of the following conditions are true:

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

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

[0340] – Otherwise, qPY_A is set to the luma quantization parameter QpY of the coding / decoding unit containing the luma coding / decoding block covering (xQg-1, yQg).

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

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

[0343] – availableB is equal to FALSE.

[0344] – The CTB containing the luma coding / decoding block covering the luma position (xQg, yQg–1) is not equal to the CTB containing

[0345] the current luma coding / decoding block at (xCb, yCb), i.e., all of the following conditions are true:

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

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

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

[0349] 4. The predicted luminance quantization parameter qPY_PRED is derived as follows:

[0350] – If all of the following conditions are met, qPY_PRED is set equal to the luminance quantization parameter QpY of the coding unit of the coded luminance block that contains the coverage (xQg, yQg –

[0351] 1):

[0352] – availableB is equal to TRUE.

[0353] – The current quantization group is the first quantization group of the CTB rows in the slice.

[0354] – Otherwise, qPY_PRED is derived as follows:

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

[0356] The variable QpY is derived as follows:

[0357] QpY = ((qPY_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffset) % (64 +

[0358] QpBdOffset)) - QpBdOffset (1116)

[0359] The luminance quantization parameter Qp′Y is derived as follows:

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

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

[0362] – When treeType is equal to DUAL_TREE_CHROMA, the variable QpY is set equal to the luminance quantization parameter QpY of the luminance coding unit that covers the luminance position (xCb + cbWidth / 2, yCb + cbHeight / 2).

[0363] – The variables qPCb, qPCr, and qPCbCr are derived as follows:

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

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

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

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

[0368] – For the chrominance quantization parameters of the Cb and Cr components, Qp′Cb and Qp′Cr, and the joint Cb-Cr encoding / decoding Qp′CbCr are derived as follows:

[0369] Qp′Cb = Clip3(-QpBdOffset, 63, qPCb + pps_cb_qp_offset +

[0370] slice_cb_qp_offset + CuQpOffsetCb)

[0371] + QpBdOffset (1122)

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

[0373] + QpBdOffset (1123)

[0374] Qp′CbCr = Clip3(-QpBdOffset, 63, qPCbCr + pps_joint_cbcr_qp_offset +

[0375] slice_joint_cbcr_qp_offset + CuQpOffsetCbCr) + QpBdOffset(1124)

[0376] 2.9 Adaptive Color Transform (ACT)

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

[0378] In VVC, unless the maximum transform size is smaller than the width or height of a coding unit (CU), a CU leaf node is also used as the unit for transform processing. Thus, in the proposed implementation, an ACT flag is signaled for a CU to select a color space for coding its residual. Additionally, following 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 luma component (i.e., the DM mode).

[0379] 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.

[0380]

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

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

[0383] 1. Split tree partitioning: When applying a split tree, the luma and chroma samples inside a CTU are partitioned by different structures. This results in CUs in the luma tree containing only the luma component and CUs in the chroma tree containing only two chroma components.

[0384] Intra sub-partition prediction (ISP): ISP sub-partitioning is only applied to luma, while chroma signaling is coded without partitioning. In the current ISP design, except for the last ISP sub-partition, other sub-partitions contain only the luma component.

[0385] 2. Advanced deblocking control in VVC draft 7

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

[0387] 2.11 Cross-component adaptive loop filtering (CC-ALF)

[0388] Figure 14A Shows the placement of CC-ALF relative to other loop filtering. CC-ALF operates by applying a linear diamond filter ( Figure 14B ) to the luma channel for each chroma component, denoted as

[0389]

[0390] where

[0391] (x, y) is the location of the refined chrominance component i

[0392] (x C , y C ) is the luminance location based on (x, y)

[0393] S i is the filtering support in luminance for chrominance component i

[0394] c i (x0, y0) represents the filtering coefficient (2 - 3)

[0395] The support region is centered around the luminance location (x C , y C ) and is calculated based on the spatial scaling factor between the luminance and chrominance planes. All filtering coefficients are transmitted in the APS and have an 8 - bit dynamic range. The APS can be referenced in the slice header. The CC - ALF coefficients for each chrominance component of a slice are also stored in the buffer corresponding to the temporal sub - layer. Using the slice - level flag helps in the re - use of these sets of temporal sub - layer filtering coefficients. The application of CC - ALF filtering is controlled on variable block sizes (i.e., 16×16, 32×32, 64×64, 128×128) and is signaled by the context - based decoding flags received for each sample block. The block size and the CC - ALF enable flag are received at the slice level for each chrominance component. The boundary padding for the horizontal virtual boundary makes use of repetition. For the remaining boundaries, the same type of padding as in conventional ALF is used.

[0396] 2.11.1 Syntax Design of CC - ALF in JVET - Q0058

[0397] 7.3.2.6 Picture Header RBSP Syntax

[0398]

[0399]

[0400]

[0401] 7.3.2.16 Adaptive Loop Filter Data Syntax

[0402]

[0403]

[0404] 7.3.7 Slice Header Syntax

[0405]

[0406]

[0407]

[0408] When pic_cross_component_alf_cb_enabled_flag is equal to 1, it specifies that cross-component Cb filtering is enabled for all slices associated with PH, and it can be applied to the Cb color component in the slice.

[0409] When pic_cross_component_alf_cb_enabled_flag is equal to 0, it specifies that cross-component Cb filtering can be disabled for one, or more, or all slices associated with PH. When it is absent, pic_cross_component_alf_cb_enabled_flag is inferred to be equal to 0.

[0410] pic_cross_component_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced by the Cb color component of the slice associated with PH.

[0411] The value of alf_cross_component_cb_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to pic_cross_component_alf_cb_aps_id shall be equal to 1.

[0412] pic_cross_component_cb_filters_signalled_minus1 plus 1 specifies the number of cross-component Cb filters. The value of pic_cross_component_cb_filters_signalled_minus1 shall be in the range of 0 to 3.

[0413] When pic_cross_component_alf_cb_enabled_flag is equal to 1, the requirement for bitstream consistency is that pic_cross_component_cb_filters_signalled_minus1 shall be less than or equal to the value of alf_cross_component_cb_filters_signalled_minus1 in the referenced ALF APS mentioned by pic_cross_component_alf_cb_aps_id.

[0414] pic_cross_component_alf_cr_enabled_flag being equal to 1 indicates that cross-component Cr filtering is enabled for all slices associated with PH and can be applied to the Cr color component in the slices.

[0415] pic_cross_component_alf_cr_enabled_flag being equal to 0 indicates that cross-component Cr filtering can be disabled for one, or more, or all slices associated with PH. When not present, pic_cross_component_alf_cr_enabled_flag is inferred to be equal to 0.

[0416] pic_cross_component_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced by the Cr color component of the slices associated with PH.

[0417] The value of alf_cross_component_cr_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to pic_cross_component_alf_cr_aps_id shall be equal to 1.

[0418] pic_cross_component_cr_filters_signalled_minus1 plus 1 specifies the number of cross-component Cr filterings. The value of pic_cross_component_cr_filters_signalled_minus1 shall be in the range of 0 to 3

[0419] When pic_cross_component_alf_cr_enabled_flag is equal to 1, the requirement for bitstream consistency is that pic_cross_component_cr_filters_signalled_minus1 should be less than or equal to the value of alf_cross_component_cr_filters_signalled_minus1 in the referenced ALF APS mentioned by pic_cross_component_alf_cr_aps_id.

[0420] alf_cross_component_cb_filter_signal_flag being equal to 1 signals cross-component Cb filtering. alf_cross_component_cb_filter_signal_flag being equal to 0 signals no cross-component Cb filtering. When ChromaArrayType is equal to 0,

[0421] alf_cross_component_cb_filter_signal_flag shall be equal to 0.

[0422] alf_cross_component_cb_filters_signalled_minus1 plus 1 specifies the number of cross-component Cb filterings signalled in the current ALF APS.

[0423] The value of alf_cross_component_cb_filters_signaled_minus1 shall be in the range of 0 to 3. alf_cross_component_cb_coeff_plus32[k][j] minus 32 specifies the value of the j-th coefficient of the k-th cross-component Cb filtering set signalled. When alf_cross_component_cb_coeff_plus32[k][j] does not exist, it is inferred to be equal to 32.

[0424] Having elements for j = 0..7

[0425] CcAlfApsCoeff Cb The signalled k-th cross-component Cb filtering coefficient CcAlfApsCoeff Cb [adaptation_parameter_set_id][k] is derived as follows:

[0426] CcAlfApsCoeff Cb [adaptation_parameter_set_id][k][j] = alf_cross_compone

[0427] nt_cb_coeff_plus32[k][j] - 32(7 - 51)

[0428] When alf_cross_component_cr_filter_signal_flag equals 1, signalling is specified to notify cross-component Cr filtering. When alf_cross_component_cr_filter_signal_flag equals 0, no signalling is specified to notify cross-component Cr filtering. When ChromaArrayType equals 0,

[0429] alf_cross_component_cr_filter_signal_flag shall equal 0.

[0430] alf_cross_component_cr_filters_signalled_minus1 plus 1 specifies the number of cross-component Cr filterings signalled in the current ALF APS.

[0431] The value of alf_cross_component_cr_filters_signalled_minus1 shall be in the range of 0 to 3. alf_cross_component_cr_coeff_plus32[k][j] minus 32 specifies the value of the j-th coefficient of the k-th cross-component Cr filtering set signalled. When alf_cross_component_cr_coeff_abs[k][j] does not exist, it is inferred to be equal to 32.

[0432] Having elements for j = 0..7

[0433] CcAlfApsCoeff Cr The signalled k-th cross-component Cr filtering coefficient of [adaptation_parameter_set_id][k][j] CcAlfApsCoeff Cr [adaptation_parameter_set_id][k] is derived as follows: CcAlfApsCoeff Cr[adaptation_parameter_set_id][k][j] = alf_cross_component_cr_coeff_plus32[k][j] – 32(7 - 52)

[0434] 3. Disadvantages of existing implementations

[0435] DMVR and BIO do not involve the original signaling during the refinement of motion vectors, which may result in inaccurate motion information for the coded blocks. In addition, DMVR and BIO sometimes adopt fractional motion vectors after motion refinement, while screen videos usually have integer motion vectors, making the current motion information even more inaccurate and the coding / decoding performance worse.

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

[0437] 2. The logic of the luminance deblocking filter process is complex for hardware design.

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

[0439] 4. During the BS decision process, JCCR is processed separately from the blocks that do not apply JCCT coding / decoding. However, JCCR is just a special way of coding / decoding residuals. Therefore, this design may bring additional complexity without obvious benefits.

[0440] 5. In chrominance edge determination, Qp Q and Qp P are set to be equal to the Qp 0,0 value of the coding / decoding unit of the coded block that includes the samples q 0,0 and p Y respectively. However, during the quantization / dequantization process, the QP of chrominance samples is derived from the QP of the luminance block corresponding to the central position of the current chrominance CU. When the dual-tree is enabled, different positions of the luminance block may result in different QPs. Therefore, incorrect QPs may be used for filtering decisions during the chrominance deblocking process. This misalignment may lead to visual effects. An example is shown in Figures 9A - 9B . In Figures 9A - 9B , the left side ( Figure 9A ) is the corresponding CTB partition for the luminance block, and the right side ( 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 central position of CU c 1 is derived. Then, CU cThe corresponding luminance sample at the center position of 1, and the luminance QP associated with the luminance CU covering the corresponding luminance sample (i.e., CU Y 3) is then utilized to derive the QP of CU c 1. However, when making a filtering decision for the three depicted samples (with solid circles), the QP of the CU covering the corresponding 3 samples is selected. Thus, for the first, second, and third chrominance samples (as Figure 9B shown), the QPs of CU Y 2, CU Y 3, and CU Y 4 are utilized respectively. That is, chrominance samples in the same CU may use different QPs for filtering decisions, which may lead to incorrect decisions.

[0441] 6. Different picture-level QP offsets (i.e., pps_joint_cbcr_qp_offset) are applied to JCCR coding / decoding blocks, which are different from the picture-level offsets for Cb / Cr applied to non-JCCR coding / decoding blocks (e.g., pps_cb_qp_offset and pps_cr_qp_offset). However, during the chrominance deblocking filtering decision process, only those offsets of non-JCCR coding / decoding blocks are utilized. Failure to consider the coding / decoding mode may lead to incorrect filtering decisions.

[0442] 7. TS and non-TS coding / decoding blocks adopt different QPs during the dequantization process, which can also be considered during the deblocking process.

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

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

[0445] 10. The chrominance QP in deblocking is derived based on the QP used in the chrominance dequantization process (e.g., qP). However, qP should be clipped or decreased by 5 for TS and ACT blocks when it is used in the deblocking process.

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

[0447] 12. CC-ALF for enabling / disabling of the chrominance component is signaled in the picture header. However, if the color format is 4:0:0, such information does not need to be signaled, but is signaled in the current VVC specification.

[0448] 13. For chroma BDPCM, ACT, and palette modes, the SPS control flags are signaled under the condition check where chroma_format_idc equals 3. This means that even if separate plane coding / decoding is used for 4:4:4 color format, those flags still need to be signaled even if the picture is considered a monochrome picture. The related syntax elements are defined as follows:

[0449] 7.3.2.3 Sequence parameter set RBSP syntax

[0450]

[0451] 4. Example techniques and embodiments

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

[0453] The proposed methods described below can be applied to deblocking filtering. Optionally, they can be applied to other types of in-loop filtering, for example, those that depend on quantization parameters.

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

[0455] In the following example, 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 the M (M is P or Q) side. 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 samples on the P side, and Q can represent samples on the Q side. The blocks on the P side and Q side can represent the blocks marked by the dotted line.

[0456] Regarding the Chrominance QP in Deblocking

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

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

[0459] b. Optionally, the chroma QP offset can be not considered as an input to the chroma QP table.

[0460] 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).

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

[0462] 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.

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

[0464] b. In one example, the chrominance deblocking parameters can depend on the chrominance QP table value indexed by QpP, where QpP is the luma QP value on the P side.

[0465] c. In one example, the chrominance deblocking parameters can depend on the chrominance QP table value indexed by QpQ, where QpQ is the luma QP value on the Q side.

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

[0467] a. In one example, the QP for the deblocking process can be equal to the QP in dequantization.

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

[0469] i. In one example, the QP for the deblocking process can be derived by

[0470] Max(QpPrimeTsMin,qP)-

[0471] (cu_act_enabled_flag[xTbY][yTbY]? N:0), where

[0472] QpPrimeTsMin is the minimum QP of the TS block, and cu_act_enabled_flag is the use flag of the ACT.

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

[0474] ii. In one example, the QP for the deblocking process can be derived by

[0475] Max(QpPrimeTsMin, qP -

[0476] (cu_act_enabled_flag[xTbY][yTbY]? N : 0)) derivation, where

[0477] QpPrimeTsMin is the minimum QP of the TS block, and cu_act_enabled_flag is the usage flag of ACT.

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

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

[0480] 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.

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

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

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

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

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

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

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

[0488] b. In one example, a filtering process (e.g., a chrominance edge determination process) that requires the quantization parameter of a chrominance block may depend on whether the block uses JCCR.

[0489] i. Optionally, in addition, the picture / slice-level QP offset (e.g., pps_joint_cbcr_qp_offset) applied to the JCCR coded / decoded block may be further considered during the deblocking filtering process.

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

[0491] 1. In one example, when any block on the P or Q side uses JCCR.

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

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

[0494] 6. A chrominance filtering process (e.g., a chrominance edge determination process) that requires access to the decoded information of a luma block may utilize the information associated with the same luma coded / decoded block that is used to derive the chrominance QP during the dequantization / quantization process.

[0495] a. In one example, a chrominance filtering process (e.g., a chrominance edge determination process) that requires the quantization parameter of a luma block may utilize the luma coded / decoded unit of the corresponding luma samples covering the center position of the current chrominance CU.

[0496] b. Figures 9A - 9B depicts an example in which the decoded information of CU Y 3 can be used for Figure 9B the filtering decision of three chrominance samples (the first, the second, and the third) in.

[0497] 7. A chrominance filtering process (e.g., a chrominance edge determination process) may depend on the quantization parameter of the scaling process (e.g., quantization / dequantization) applied to the chrominance block.

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

[0499] b. Optionally, in addition, the QP of the scaling process applied to the chrominance block may already have considered the chrominance CU-level QP offset.

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

[0501] 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.

[0502] 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.

[0503] 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.

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

[0505] 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.

[0506] i. 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 with the applied JCCR.

[0507] 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 in joint_cb_cr mode and the JCCR mode is equal to 2.

[0508] 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.

[0509] i. In one example, the chroma QP for deblocking on the Q side may depend on whether the transform block on the Q side is coded with the applied JCCR.

[0510] ii. In one example, the chroma QP for deblocking on the Q side may depend on whether the transform block on the Q side is coded with the applied JCCR and whether the JCCR mode is equal to 2.

[0511] 10. The signaling of the chroma QP may be in the coding / decoding unit.

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

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

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

[0515] 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.

[0516] 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.

[0517] a. In one example, when TuCResMode[xTb][yTb] is equal to 2, 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, where (xTb, yTb) represents the transform block containing the first sample on the P side, i.e., p 0,0 .

[0518] b. In one example, when TuCResMode[xTb][yTb] is equal to 2, 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, where (xTb, yTb) represents the transform block containing the first sample on the P side, i.e., p 0,0 .

[0519] c. In one example, when TuCResMode[xTb][yTb] is equal to 2, 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, where (xTb, yTb) represents the transform block containing the first sample on the P side, i.e., p 0,0 .

[0520] d. In one example, when TuCResMode[xTb][yTb] is equal to 2, 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, where (xTb, yTb) represents the transform block containing the last sample on the Q side, i.e., q 0,0 .

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

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

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

[0524] 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.

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

[0526] 14. Considering different levels of offsets, deblocking control offsets can be accumulated instead of using a rewrite mechanism.

[0527] 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.

[0528] 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.

[0529] Regarding QP Setting

[0530] 15. An indication to enable block-level chroma QP offset is signaled at the stripe / slice / brick / sub-picture level (e.g., slice_cu_chroma_qp_offset_enabled_flag).

[0531] a. Optionally, such an indication can be signaled conditionally.

[0532] i. In one example, it can be signaled conditional on the JCCR enable flag.

[0533] ii. In one example, it can be signaled conditional on the block-level chroma QP offset enable flag in the picture level.

[0534] iii. Optionally, such an indication can alternatively be derived.

[0535] 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.,

[0536] slice_cu_chroma_qp_offset_enabled_flag) is true.

[0537] slice_cu_chroma_qp_offset_enabled_flag.

[0538] 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.,

[0539] slice_cu_chroma_qp_offset_enabled_flag) is false.

[0540] slice_cu_chroma_qp_offset_enabled_flag.

[0541] 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.

[0542] 16. For JCCR codec blocks with different modes, the same QP derivation method is used during the scaling process (quantization / dequantization).

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

[0544] …

[0545] Filtering Procedure

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

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

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

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

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

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

[0552] 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.

[0553] 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.

[0554] i. Optionally, 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. 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 filtering on / off decision may only include the gradient of the samples on the Q side, and vice versa.

[0555] i. Additionally, optionally, the gradient on one side may be scaled by n

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

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

[0558] 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

[0559] c. Positions of CU / PU / TU / block / video coding unit

[0560] d. Coding mode of a block containing samples along an edge

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

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

[0563] g. Indication of color format (e.g., 4:2:0, 4:4:4, RGB, or YUV)

[0564] h. Coding tree structure (e.g., dual tree or single tree)

[0565] i. Strip / slice group type and / or picture type

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

[0567] k. Temporal layer ID

[0568] l. Profile / level / hierarchy of the standard

[0569] m. Optionally, N can be signaled to the decoder

[0570] Regarding Boundary Strength Derivation

[0571] 19. It is proposed to consider JCCR-coded blocks as those non-JCCR-coded blocks in the boundary strength determination process.

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

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

[0574] 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.

[0575] a. In one example, even when two blocks have different reference pictures, deblocking filtering can be disabled.

[0576] b. In one example, deblocking filtering can be disabled even when two blocks have different numbers of MVs (e.g., one is unidirectionally predicted while the other is bidirectionally predicted).

[0577] c. 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.

[0578] i. Optionally, 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.

[0579] d. 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

[0580] i. Optionally, 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

[0581] ii. Optionally, 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 -

[0582] MVQ[1].x)>Th) || Abs(MVP[1].y - MVQ[1].y)>Th

[0583] iii. Optionally, 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

[0584] e. 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.

[0585] f. In the above example, Th is an integer (e.g., 4, 8, or 16).

[0586] g. In the above example, Th may depend on

[0587] i. video content (e.g., screen content or natural content)

[0588] ii. a 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

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

[0590] iv. the coding mode of a block containing samples along an edge

[0591] v. the transform matrix applied to a block containing samples along an edge

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

[0593] vii. an indication of the color format (e.g., 4:2:0, 4:4:4, RGB, or YUV)

[0594] viii. the coding tree structure (e.g., binary tree or single tree)

[0595] ix. the strip / slice group type and / or picture type

[0596] x. the color component (e.g., may apply only to Cb or Cr)

[0597] xi. the temporal layer ID

[0598] xii. the profile / level / hierarchy of the standard

[0599] xiii. Optionally, Th can be signaled to the decoder.

[0600] h. The above example can be applied under certain conditions.

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

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

[0603] iii. In one example, the condition is that blkP and blkQ are not encoded / decoded in CIIP mode.

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

[0605] Regarding the Luminance Deblocking Filtering Process

[0606] 21. Deblocking can use different QPs for TS-encoded / decoded blocks and non-TS-encoded / decoded blocks.

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

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

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

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

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

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

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

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

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

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

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

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

[0619] 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

[0620] c. Positions of CU / PU / TU / block / video coding unit

[0621] d. Coding mode of a block containing samples along an edge

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

[0623] f. Block dimensions of the current block and / or its neighboring blocks

[0624] g. Block shapes of the current block and / or its neighboring blocks

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

[0626] i. Coding tree structure (such as dual tree or single tree)

[0627] j. Strip / slice group type and / or picture type

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

[0629] l. Temporal layer ID

[0630] m. Profile / level / tier of the standard

[0631] n. Optionally, beta signaling can be signaled to the decoder.

[0632] Regarding the Scaling Matrix (Dequantization Matrix)

[0633] 24. Values at specific positions of the quantization matrix can be set to constants.

[0634] 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 TU / TB / PU / PB / CU / CB.

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

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

[0637] c. In one example, for those positions, signaling of matrix values can be not utilized.

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

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

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

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

[0642] Regarding Cross - Component Adaptive Loop Filtering (CCALF)

[0643] 27. CCALF can be applied before certain loop filtering processes in the decoder

[0644] a. In one example, CCALF can be applied before the deblocking process in the decoder.

[0645] b. In one example, CCALF can be applied before SAO in the decoder.

[0646] c. In one example, CCALF can be applied before ALF in the decoder.

[0647] d. Optionally, the order of different filtering (e.g., CCALF, ALF, SAO, deblocking filtering) can be not fixed.

[0648] i. In one example, the call of CCLAF can be before one filtering process of one video unit or after another of another video unit.

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

[0650] e. Optionally, the indication of the order of different filtering (e.g., CCALF, ALF, SAO, deblocking filtering) can be signaled or derived on the fly.

[0651] i. Optionally, the indication of calling CCALF can be signaled or derived on the fly.

[0652] f. The explicit (e.g., signaling from the encoder to the decoder) or implicit (e.g., derived in both the encoder and the decoder) indication on how to control CCALF can be decoupled for different color components (e.g., Cb and Cr).

[0653] g. Whether and / or how CCALF is applied 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 the color downsampling position or phase)

[0654] Regarding the Chrominance QP Offset List

[0655] 28. The signaling and / or selection of the chrominance QP offset list may depend on the codec prediction mode / picture type /

[0656] slice or tile or block type.

[0657] a. For different codec modes, chrominance QP offset lists, such as

[0658] cb_qp_offset_list[i], cr_qp_offset_list[i], and

[0659] joint_cbcr_qp_offset_list[i] may be different.

[0660] b. In one example, whether and how the chrominance QP offset list is applied may depend on whether the current block is coded in the intra mode.

[0661] c. In one example, whether and how the chrominance QP offset list is applied may depend on whether the current block is coded in the inter mode.

[0662] d. In one example, whether and how the chrominance QP offset list is applied may depend on whether the current block is coded in the palette mode.

[0663] e. In one example, whether and how the chrominance QP offset list is applied may depend on whether the current block is coded in the IBC mode.

[0664] f. In one example, whether and how the chrominance QP offset list is applied may depend on whether the current block is coded in the transform skip mode.

[0665] g. In one example, whether and how the chrominance QP offset list is applied may depend on whether the current block is coded in the BDPCM mode.

[0666] h. In one example, whether and how the chrominance QP offset list is applied may depend on whether the current block is coded in transform_quant_skip or lossless mode.

[0667] Regarding the Chrominance Deblocking at CTU Boundaries

[0668] 29. How to select the QP used in the deblocking process (e.g., the QP used for corresponding luminance or chrominance quantization) can depend on the position of the sample relative to the CTU / CTB / VPDU boundary.

[0669] 30. How to select the QP used in the deblocking process (e.g., the QP used for corresponding luminance or chrominance quantization) can depend on the color format (such as RGB and YCbCr) and / or the color sampling format (e.g., 4:2:0, 4:2:2, and 4:4:4), and / or the color downsampling position or phase.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0688] i. In one example, the function can be based on the maximum of the chrominance QPs for every 8 luminance samples.

[0689] ii. In one example, the function can be based on the maximum of the chrominance QPs for every 16 luminance samples.

[0690] iii. In one example, the function can be based on the maximum of the chrominance QPs for every 32 luminance samples.

[0691] iv. In one example, the function can be based on the maximum of the chrominance QPs for every 64 luminance samples.

[0692] v. In one example, the function can be based on the maximum of the chrominance QPs for each CTU.

[0693] c. In one example, deblocking can be based on the minimum function of the chrominance QP on the P side.

[0694] i. In one example, the function can be based on the minimum of the chrominance QPs for every 8 luminance samples.

[0695] ii. In one example, the function can be based on the minimum of the chrominance QPs for every 16 luminance samples.

[0696] iii. In one example, the function can be based on the minimum of the chrominance QPs for every 32 luminance samples.

[0697] iv. In one example, the function can be based on the minimum of the chrominance QPs for every 64 luminance samples.

[0698] v. In one example, the function can be based on the minimum of the chrominance QPs for each CTU.

[0699] d. In one example, deblocking can be based on the subsampling function of the chrominance QP on the P side.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0721] e. Optionally, the above items can be applied to the chroma QP on the Q side for the deblocking process.

[0722] 33. The quantization group to which the chroma component can be constrained must be greater than a certain size.

[0723] a. In one example, the width of the quantization group to which the chroma component can be constrained must be greater than a certain value K.

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

[0725] 34. The quantization group to which the luma component can be constrained must be greater than a certain size.

[0726] a. In one example, the width of the quantization group to which the luma component can be constrained must be greater than a certain value K.

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

[0728] 35. The chroma QP can be constrained to be the same for a chroma 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.

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

[0730] b. In one example, the width of the quantization group of the chroma component must be no less than 4*m

[0731] 36. The chroma QP can be constrained to be the same for a chroma 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.

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

[0733] b. In one example, the height of the quantization group of the chroma component must be no less than 4*n

[0734] Regarding the Chrominance Deblocking Filtering Process

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

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

[0737] b. In one example, X is bidirectional optical flow (BDOF).

[0738] c. In one example, X is predictive refined optical flow (PROF).

[0739] d. In one example, X is decoder-side motion vector refinement (DMVR).

[0740] e. In one example, the use of codec tool X can be signaled under the condition check of the slice type (e.g., P or B slice; non-I slice).

[0741] Regarding the Chrominance Deblocking Filtering Process

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

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

[0744] b. 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.

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

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

[0747] and Cr components.

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

[0749] 1. Optionally, in one example, chrominance weak filtering can be performed only when at least one chrominance component does not satisfy the strong filtering condition.

[0750] Regarding ACT

[0751] 39. Whether the deblocking QP is equal to the dequantization QP can depend on whether ACT is applied.

[0752] 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.

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

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

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

[0756] a. In one example, when ACT is applied to a block, luma BDPCM should not be applied to that block.

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

[0758] c. In one example, when ACT is applied to a block, neither luma nor chroma BDPCM should be applied to that block.

[0759] d. In one example, when luma and / or chroma BDPCM is applied to a block, ACT should not be applied to that block.

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

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

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

[0763] c. In one example, when intra_bdpcm_luma_flag is true and

[0764] sps_bdpcm_chroma_enabled_flag is false, cu_act_enabled_flag can be inferred as false.

[0765] 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.

[0766] Related to CC - ALF

[0767] 42. ChromaArrayType in the specification.

[0768] a. In one example, it can be conditionally signaled whether cross-component Cb filtering is enabled for all slices associated with a picture header and can be applied to the Cb color component in the slice (e.g., pic_cross_component_alf_cb_enabled_flag), such as under the condition of "if(ChromaArrayType!= 0)" or the color format is not 4:0:0 (e.g., chroma_format_idc!= 0).

[0769] b. In one example, it can be conditionally signaled whether cross-component Cr filtering is enabled for all slices associated with a picture header and can be applied to the Cr color component in the slice (e.g., pic_cross_component_alf_cr_enabled_flag), such as under the condition of "if(ChromaArrayType!= 0)" or the color format is not 4:0:0 (e.g., chroma_format_idc!= 0).

[0770] 43. ALF and CC-ALF can be controlled separately.

[0771] a. In one example, it can be signaled with a first syntax element whether CC-ALF is enabled for a video processing unit.

[0772] i. In one example, it can be signaled at the sequence / video / picture level (e.g., in the SPS) independent of the ALF enable flag (e.g., sps_alf_enabled_flag).

[0773] 1. Optionally, it can also be signaled under the condition check of enabling ALF.

[0774] ii. Optionally, in addition, the first syntax element can be signaled under the condition check of the color format and / or separate plane coding and / or ChromaArrayType in the specification.

[0775] b. Optionally, in addition, the second syntax element may be further signaled in the picture header / PPS / slice header, e.g., pic_ccalf_enabled_present_flag, to specify whether there are CC-ALF related syntax elements in the picture header (e.g.,

[0776] pic_cross_component_alf_cb_enabled_flag,

[0777] pic_cross_component_alf_cb_aps_id,

[0778] pic_cross_component_cb_filters_signalled_minus1,

[0779] pic_cross_component_alf_cr_enabled_flag,

[0780] pic_cross_component_alf_cr_aps_id and

[0781] pic_cross_component_cr_filters_signalled_minus1).

[0782] i. Optionally, when the ALF enable flag (e.g., sps_alf_enabled_flag) is true, the second syntax element may be signaled.

[0783] c. In one example, the syntax elements in the PPS or PH or slice header related to CC-ALF are signaled only when both of the following two conditions are true:

[0784] i. ChromaArrayType!= 0 or the color format is not 4:0:0.

[0785] ii. CC-ALF is signaled as enabled in a higher level video unit (e.g., SPS).

[0786] d. In one example, the syntax elements in the PPS or PH or slice header related to CC-ALF are signaled when one of the following conditions is true:

[0787] i. ChromaArrayType!= 0 or the color format is not 4:0:0.

[0788] ii. CC-ALF is signaled as enabled in a higher level video unit (e.g., SPS).

[0789] Regarding Advanced Syntax

[0790] 44. Control flags for chroma BDPCM mode (e.g., sps_bdpcm_chroma_enabled_flag), palette mode (e.g., sps_palette_enabled_flag), and / or ACT mode (e.g., sps_act_enabled_flag) can be signaled based at least on the value of chroma array type (e.g., ChromaArrayType).

[0791] a. In one example, sps_bdpcm_chroma_enabled_flag can be signaled only if sps_bdpcm_enabled_flag is true && ChromaArrayType equals 3.

[0792] b. In one example, sps_palette_enabled_flag can be signaled only when ChromaArrayType equals 3.

[0793] c. In one example, sps_act_enabled_flag can be signaled only when ChromaArrayType equals 3.

[0794] d. In one example, sps_bdpcm_chroma_enabled_flag can not be signaled when ChromaArrayType is not equal to 3.

[0795] e. In one example, sps_palette_enabled_flag can not be signaled when ChromaArrayType is not equal to 3.

[0796] f. In one example, sps_act_enabled_flag can not be signaled when ChromaArrayType is not equal to 3.

[0797] g. In one example, when ChromaArrayType is not equal to 3, the compliant bitstream shall satisfy that sps_bdpcm_chroma_enabled_flag shall be set equal to 0.

[0798] h. In one example, when ChromaArrayType is not equal to 3, the compliant bitstream shall satisfy that sps_palette_enabled_flag shall be set equal to 0.

[0799] i. In one example, when ChromaArrayType is not equal to 3, the compliant bitstream shall satisfy that sps_act_enabled_flag shall be set equal to 0.

[0800] General Implementation Concept

[0801] 45. The methods proposed above can be applied under certain conditions.

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

[0803] i. Optionally, in addition, for the 4:4:4 color format, how to apply deblocking filtering to two color chrominance components can follow the current design.

[0804] 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 (such as

[0805] SPS / PPS / picture header / strip header).

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

[0807] i. Video content (such as screen content or natural content)

[0808] 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

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

[0810] a. In one example, in order to filter samples along the CTU / CTB boundary (for example, the first K (for example, K = 4 / 8) to the top / left / right / bottom boundary), the existing design can be applied. For other samples, the proposed method (such as points 3 / 4) can be alternatively applied.

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

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

[0813] vi. The block dimension of the current block and / or its adjacent blocks

[0814] vii. The block shape of the current block and / or its adjacent blocks

[0815] viii. Indication of color format (e.g., 4:2:0, 4:4:4, RGB, or YUV)

[0816] ix. Coding tree structure (e.g., dual tree or single tree)

[0817] x. Slice / tile type and / or picture type

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

[0819] xii. Temporal layer ID

[0820] xiii. Standard profile / level / hierarchy

[0821] xiv. Optionally, m and / or n may be signaled to the decoder.

[0822] 5. Additional embodiments

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

[0824] 5.1. Embodiment #1 regarding chrominance QP in deblocking

[0825] 8.8.3.6 Edge filtering process in one direction

[0826] …

[0827] - Otherwise (cIdx is not equal to 0), the filtering process of the edges in the chrominance coding block of the current coding unit specified by cIdx includes the following ordered steps:

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

[0829] cQpPicOffset = cIdx == 1? pps_cb_qp_offset :

[0830] pps_cr_qp_offset (8 - 1065)

[0831] 8.8.3.6.3 Decision process for chrominance block edges

[0832] …

[0833] Variable Qp Q and Qp P are set to be equal to the Qp 0,0 value of the coding unit including the coding block containing samples q 0,0 and p Y respectively.

[0834] Variable Qp C The derivation is as follows:

[0835]

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

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

[0838] Note - The variable cQpPicOffset provides an adjustment to the value of pps_cb_qp_offset or pps_cr_qp_offset depending on whether the filtered chrominance component is the Cb or Cr component. However, to avoid the need to change the adjustment amount within the picture, the filtering process does not include an adjustment to 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) an adjustment to the value of CuQpOffset Cb 、CuQpOffset Cr or CuQpOffset CbCr value.

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

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

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

[0842] value of slice_beta_offset_div2.

[0843] The variable β is derived as follows:

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

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

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

[0847] (8 - 1136)

[0848] where slice_tc_offset_div2 is the syntax element of the slice containing sample q 0,0 of the slice

[0849] the value of slice_tc_offset_div2

[0850] Variable t C is derived as follows

[0851] t C = (BitDepth C < 10)? (t C '+ 2)>>(10 - BitDepth C ):

[0852] t C ' * (1 << (BitDepth C - 8)) (8 - 1137)

[0853] 5.2. Example #2 on boundary strength derivation

[0854] 8.8.3.5 Derivation process of boundary filtering strength

[0855] The inputs to this process are

[0856] – The picture sample array recPicture

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

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

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

[0860] – The variable edgeType, specifying whether it is a vertical (EDGE_VER) or horizontal (EDGE_HOR) filtering edge, – The variable cIdx, specifying the color component of the current coding / decoding block

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

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

[0863] … For i = 0..xN, j = 0..yN, xD i and yD j are applied as follows:

[0864] – If edgeFlags[xD i [yD j equals 0, then the variable bS[xD i [yD j is set to equal 0. – Otherwise, it is applied as follows:

[0865] …

[0866] – The variable bS[xD i [yD j is derived as follows:

[0867] – If cIdx equals 0, and both samples p0 and q0 are in a coding block with intra_bdpcm_flag equal to 1, then bS[xD i [yD j is set to equal 0.

[0868] – Otherwise, if sample p0 or q0 is in the coding block of a coding unit coded in an intra prediction mode, then bS[xD i [yD j is set to equal 2.

[0869] – Otherwise, if the block edge is also a transform block edge, and sample p0 or q0 is in a coding block with ciip_flag equal to 1, then bS[xD i [yD j is set to equal 2.

[0870] – Otherwise, if the block edge is also a transform block edge, and sample p0 or q0 is in a transform block containing one or more non-zero transform coefficient levels, then bS[xD i [yD j is set to equal 1.

[0871] – Otherwise, if the block edge is also a transform block edge, cIdx is greater than 0, and sample p0 or q0 is in a transform unit with tu_joint_cbcr_residual_flag equal to 1, then bS[xD i [yD j is set to equal 1.

[0872] – Otherwise, if the prediction mode of the coding / decoding sub-block containing sample p0 is different from the prediction mode of the coding / decoding sub-block containing sample q0 (i.e., one of the coding / decoding sub-blocks is coded / decoded in IBC prediction mode and the other is coded / decoded in inter prediction mode), then

[0873] bS[xD i [yD j is set to be equal to 1.

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

[0875] –

[0876]

[0877] –

[0878]

[0879]

[0880] –

[0881] –

[0882] –

[0883] –

[0884] –

[0885]

[0886] –

[0887]

[0888]

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

[0890] 5.3. Example #3 on boundary strength derivation

[0891] 8.8.3.6 Derivation process of boundary filtering strength

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

[0893] – Array of picture samples recPicture,

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

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

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

[0897] – Variable edgeType, specifying whether it is a filtering vertical (EDGE_VER) or horizontal (EDGE_HOR) edge, – Variable cIdx, specifying the color component of the current coding / decoding block,

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

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

[0900] …

[0901] For i = 0..xN, j = 0..yN, xD i and yD j are applied as follows:

[0902] – 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.

[0903] – Otherwise, it is applied as follows:

[0904] …

[0905] – The variable bS[xD i [yD j is derived as follows:

[0906] – If cIdx is equal to 0, and both samples p0 and q0 are in a coding / decoding block with intra_bdpcm_flag equal to 1, then bS[xD i [yD j is set to be equal to 0.

[0907] – Otherwise, if sample p0 or q0 is in the coding block of a coding unit coded in an intra prediction mode, then bS[xD i [yD j is set to be equal to 2.

[0908] – Otherwise, if the block edge is also a transform block edge, and sample p0 or q0 is in a coding block with ciip_flag equal to 1, then bS[xD i [yD j is set to be equal to 2.

[0909] – Otherwise, if the block edge is also a transform block edge, and sample p0 or q0 is in a transform block containing one

[0910] or more non-zero transform coefficient levels, then bS[xD i [yD j is set to be equal to 1.

[0911] –

[0912] – Otherwise, if the prediction mode of the coding sub-block containing sample p0 is different from the prediction mode of the coding sub-block containing sample q0 (i.e., one of the coding sub-blocks is coded in an IBC prediction mode and the other is coded in an inter prediction mode), then bS[xD i [yD j is set to be equal to 1.

[0913] – Otherwise, if cIdx is equal to 0, and one or more of the following conditions are satisfied, then

[0914] bS[xD i [yD j is set to be equal to 1:

[0915] – Both the coding sub-block containing sample p0 and the coding sub-block containing sample q0 are coded in an IBC prediction mode, and the absolute difference between the horizontal or vertical components of the block vectors used in the predictions of the two coding sub-blocks is greater than or equal to 8 in units of 1 / 16 luma samples.

[0916] – For the prediction of the coding sub-block containing sample p0, a different reference picture or a different number of motion vectors is used compared to the prediction of the coding sub-block containing sample q0.

[0917] 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 to reference picture list 0 or the index to reference picture list 1 is used to form the prediction, and also regardless of whether the index positions within the reference picture lists are different.

[0918] Note 2 – The number of motion vectors for prediction of the coding / decoding sub-block covering (xSb, ySb) in the upper left sample is equal to PredFlagL0[xSb][ySb] + PredFlagL1[xSb][ySb].

[0919] – One motion vector is used to predict the coding / decoding sub-block containing sample p0, and one motion vector is used to predict the coding / decoding sub-block containing sample q0, 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 luma samples.

[0920] – Two motion vectors and two different reference pictures are used to predict the coding / decoding sub-block containing sample p0, and two motion vectors of the same two reference pictures are used to predict the coding / decoding sub-block containing sample q0, 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 luma samples.

[0921] – Two motion vectors of the same reference picture are used to predict the coding / decoding sub-block containing sample p0, and two motion vectors of the same reference picture are used to predict the coding / decoding sub-block containing sample q0, and both of the following two conditions are true:

[0922] – The absolute difference between the horizontal or vertical components of the list 0 motion vectors used in the prediction of the two coding / decoding 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 the two coding / decoding sub-blocks is greater than or equal to 8 in units of 1 / 16 luma samples.

[0923] – The absolute difference between the horizontal or vertical component of the list 0 motion vector used in the prediction of the coding / decoding sub-block containing sample p0 and the list 1 motion vector used in the prediction of the coding / decoding sub-block containing sample q0 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 coding / decoding sub-block containing sample p0 and the list 0 motion vector used in the prediction of the coding / decoding sub-block containing sample q0 is greater than or equal to 8 in units of 1 / 16 luma samples.

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

[0925] 5.4. Example #4 Regarding the Luminance Deblocking Filtering Process

[0926] 8.8.3.6.1 Determination Process for the Luminance Block Edge

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

[0928] – The picture sample array recPicture,

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

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

[0931] – The variable edgeType, specifying whether it is a filtering vertical (EDGE_VER) or horizontal (EDGE_HOR) edge, – The variable bS, specifying the boundary filtering strength,

[0932] – The variable maxFilterLengthP, specifying the maximum filtering length,

[0933] – The variable maxFilterLengthQ, specifying the maximum filtering length.

[0934] The outputs of this process are as follows:

[0935] – The variables dE, dEp, and dEq, containing the determination,

[0936] – The modified filtering length variables maxFilterLengthP and maxFilterLengthQ,

[0937] – The variable t C .

[0938] …

[0939] Apply the following ordered steps: ...

[0940] 1. When sidePisLargeBlk or sideQisLargeBlk is greater than 0, apply as follows:

[0941] 1. Derive the variables dp0L, dp3L, and modify maxFilterLengthP as follows:

[0942] – If sidePisLargeBlk equals 1, apply as follows:

[0943]

[0944] – Otherwise, apply as follows:

[0945] dp0L = dp0 (8 - 1089)

[0946] dp3L = dp3 (8 - 1090)

[0947]

[0948] 2. The variables dq0L and dq3L are derived as follows:

[0949] – If sideQisLargeBlk equals 1, then apply as follows:

[0950]

[0951] – Otherwise, apply as follows:

[0952] dq0L = dq0 (8 - 1094)

[0953] dq3L = dq3 (8 - 1095)

[0954]

[0955] …

[0956] 2. The variables dE, dEp, and dEq are derived as follows:

[0957] …

[0958] 5.5. Example #5 regarding the chroma deblocking filter process

[0959] 8.8.3.6.3 Decision process for chroma block edges

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

[0961] The inputs to this process are:

[0962] – The chroma picture sample array recPicture,

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

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

[0965] – The variable edgeType, specifying whether it is a filtering vertical (EDGE_VER) or horizontal (EDGE_HOR) edge, – The variable cIdx, specifying the color component index,

[0966] – The variable cQpPicOffset, which specifies the picture-level chrominance quantization parameter offset,

[0967] – The variable bS, which specifies the boundary filtering strength,

[0968] – The variable maxFilterLengthCbCr.

[0969] The output of this process is

[0970] – The modified variable maxFilterLengthCbCr,

[0971] – The variable t C 。

[0972] The variable maxK is derived as follows:

[0973] – If edgeType is equal to EDGE_VER, it is applied as follows:

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

[0975] – Otherwise (edgeType is equal to EDGE_HOR), it is applied as follows:

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

[0977] For i = 0..maxFilterLengthCbCr and k = 0..maxK, the values p i and q i are derived as follows:

[0978] – If edgeType is equal to EDGE_VER, it is applied as follows:

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

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

[0981] subSampleC = SubHeightC (8 - 1128) – Otherwise (edgeType is equal to EDGE_HOR), it is applied as follows:

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

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

[0984] subSampleC = SubWidthC(8 - 1131)

[0985]

[0986] –

[0987] –

[0988]

[0989] –

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

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

[0992] where slice_beta_offset_div2 is the syntax element of the slice that contains sample q 0,0 of the slice

[0993] the value of slice_beta_offset_div2.

[0994] Variable β is derived as follows:

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

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

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

[0998] (8-1136)

[0999] Among them, slice_tc_offset_div2 is the syntax element of the slice containing sample q 0,0 of the strip

[1000] The value of slice_tc_offset_div2

[1001] Variable t C is derived as follows

[1002] t C =(BitDepth C <10)?(t C '+2)>>(10 - BitDepth C ):

[1003] t C '*(1<<(BitDepth C -8)) (8-1137)

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

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

[1006] 8.8.3.6.3 Decision process for chroma block edges

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

[1008] The inputs of this process are

[1009] – The chroma picture sample array recPicture

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

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

[1012] – The variable edgeType, specifying whether it is a filtering vertical (EDGE_VER) or horizontal (EDGE_HOR) edge, – The variable cIdx, specifying the color component index

[1013] – The variable cQpPicOffset, specifying the picture-level chroma quantization parameter offset

[1014] – Variable bS, specifying the boundary filtering strength,

[1015] – Variable maxFilterLengthCbCr.

[1016] The output of this process is

[1017] – The modified variable maxFilterLengthCbCr,

[1018] – Variable t C .

[1019] The variable maxK is derived as follows:

[1020] – If edgeType is equal to EDGE_VER, then it is applied as follows:

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

[1022] – Otherwise (edgeType is equal to EDGE_HOR), it is applied as follows:

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

[1024] For i = 0..maxFilterLengthCbCr and k = 0..maxK, the values p i and q i are derived as follows:

[1025] – If edgeType is equal to EDGE_VER, then it is applied as follows:

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

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

[1028] subSampleC = SubHeightC (8 - 1128)

[1029] – Otherwise (edgeType is equal to EDGE_HOR), it is applied as follows:

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

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

[1032] subSampleC = SubWidthC (8 - 1131)

[1033] Variable Qp Q and Qp P are set to be equal to the Qp values of the coding / decoding units of the coding / decoding blocks respectively containing samples q 0,0 and p 0,0 . Y Value.

[1034]

[1035] Variable Qp C is derived as follows:

[1036]

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

[1038] Note – The variable cQpPicOffset provides an adjustment for 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 the need to change the adjustment amount within the picture, the filtering process does not include the adjustment of the values 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 values of CuQpOffset Cb , CuQpOffset Cr or CuQpOffset CbCr .

[1039] …

[1040] 5.7. Example #7 Regarding Chrominance QP in Deblocking

[1041] 8.8.3.6.3 Decision Process for Chrominance Block Edges

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

[1043] The inputs to this process are:

[1044] – The chrominance picture sample array recPicture,

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

[1046] –

[1047] …

[1048] The output of this process is

[1049] – The modified variable maxFilterLengthCbCr,

[1050] – The variable t C 。

[1051] The variable maxK is derived as follows:

[1052] – If edgeType is equal to EDGE_VER, the following is applied:

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

[1054] – Otherwise (edgeType is equal to EDGE_HOR), the following is applied:

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

[1056] For i = 0..maxFilterLengthCbCr and k = 0..maxK, the values p i and q i are derived as follows:

[1057] – If edgeType is equal to EDGE_VER, the following is applied:

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

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

[1060] subSampleC = SubHeightC (8 - 1128)

[1061] – Otherwise (edgeType is equal to EDGE_HOR), the following is applied:

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

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

[1064] subSampleC = SubWidthC (8 - 1131)

[1065]

[1066]

[1067] Variable Qp C The derivation is as follows:

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

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

[1070] Note – The variable cQpPicOffset provides an adjustment to the value of pps_cb_qp_offset or pps_cr_qp_offset depending on whether the filtered chroma component is the Cb or Cr component. However, to avoid the need to vary the amount of adjustment within the picture, the filtering process does not include an adjustment to 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) an adjustment to the value of CuQpOffset Cb 、CuQpOffset Cr or CuQpOffset CbCr value.

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

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

[1073] where slice_beta_offset_div2 is the sample containing q 0,0Syntax elements of the strip

[1074] Value of slice_beta_offset_div2

[1075] The variable β is derived as follows

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

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

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

[1079] (8 - 1136)

[1080] where slice_tc_offset_div2 is the syntax element of the strip containing sample q 0,0 of the strip

[1081] Value of slice_tc_offset_div2

[1082] 5.8. Example #8 Regarding Chrominance QP in Deblocking

[1083] When making a filtering decision for the three depicted samples (with solid circles), select the QP of the luma CU that covers the center position of the chroma CU including the three samples. Thus, for the first, second, and third chroma samples (as Figure 11 shown), only the QP of CU Y 3 is used respectively

[1084] In this way, how to select the luma CU for chrominance quantization / de - quantization processing is combined with that for the chrominance filtering decision process

[1085] 5.9. Example #9 Regarding QP for JCCR Coding / Decoding Blocks

[1086] 8.7.3 Scaling Process of Transform Coefficients

[1087] The input to this process is

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

[1089] – Variable nTbW, specifying the transform block width

[1090] – The variable nTbH, which specifies the transform block height,

[1091] – The variable cIdx, which specifies the color component of the current block,

[1092] – The variable bitDepth, which specifies the bit depth of the current color component.

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

[1094] The quantization parameter qP is derived as follows:

[1095] – If cIdx is equal to 0 and transform_skip_flag[xTbY][yTbY] is equal to 0, then it is applied as follows:

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

[1097] – Otherwise, if cIdx is equal to 0 (and transform_skip_flag[xTbY][yTbY] is equal to 1), then it is applied as follows:

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

[1099] – Otherwise, if TuCResMode[xTbY][yTbY] then it is applied as follows:

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

[1101] – Otherwise, if cIdx is equal to 1, then it is applied as follows:

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

[1103] – Otherwise (cIdx is equal to 2), then it is applied as follows:

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

[1105] 5.10. Example #10 Regarding QP for JCCR Coding / Decoding Blocks

[1106] 8.8.3.2 Deblocking Filtering Process in One Direction

[1107] The input of this process is:

[1108] – The variable treeType, which specifies whether the current processing is for the luminance component (DUAL_TREE_LUMA) or the chrominance component (DUAL_TREE_CHROMA).

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

[1110] – When ChromaArrayType is not equal to 0 and treeType is equal to DUAL_TREE_CHROMA

[1111] the array recPicture Cb and recPicture Cr ,

[1112] – The variable edgeType, which specifies whether the edge is filtered vertically (EDGE_VER) or horizontally (EDGE_HOR).

[1113] The output of this process is the modified reconstructed picture after deblocking, i.e.:

[1114] – The array recPicture L when treeType is equal to DUAL_TREE_LUMA,

[1115] – The arrays recPicture Cb and recPicture Cr when ChromaArrayType is not equal to 0 and treeType

[1116] is equal to DUAL_TREE_CHROMA.

[1117] The variables firstCompIdx and lastCompIdx are derived as follows:

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

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

[1120] For each coding unit and each coding block of each color component of the coding unit indicated by the color component index cIdx (ranging from firstCompIdx to lastCompIdx, inclusive), having a coding block width nCbW, a coding block height nCbH, and the position (xCb, yCb) of the top-left sample of the coding block, 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, filter the edge through the following ordered steps:

[1121] …

[1122]

[1123] –

[1124]

[1125] –

[1126]

[1127] –

[1128]

[1129]

[1130] –

[1131]

[1132] –

[1133]

[1134] –

[1135]

[1136]

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

[1138] 8.8.3.5 Derivation Process of Boundary Filtering Strength

[1139] The inputs to this process are:

[1140] – The array of picture samples recPicture,

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

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

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

[1144] – The variable edgeType, specifying whether it is a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge to be filtered, – The variable cIdx, specifying the color component of the current coding / decoding block,

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

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

[1147] The variable xD i 、yD j 、xN and yN are derived as follows:

[1148] …

[1149] For i = 0..xN, j = 0..yN, xD i and yD j are applied as follows:

[1150] – 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. – Otherwise, it is applied as follows:

[1151] – The sample values p0 and q0 are derived as follows:

[1152] – If edgeType is equal to EDGE_VER, p0 is set to be equal to

[1153] recPicture xCb+xD i -1][yCb+yD j , and q0 is set to be equal to

[1154] recPicture [xCb+xD i [yCb+yD j .

[1155] – Otherwise (edgeType is equal to EDGE_HOR), p0 is set to be equal to recPicture

[1156] [xCb+xD i [yCb+yD j -1], and q0 is set to be equal to recPicture

[1157] [xCb+xD i [yCb+yD j . ..

[1158] 8.8.3.6 Edge filtering process in one direction

[1159] The inputs to this process are:

[1160] – The variable edgeType, which specifies whether to process vertical edges (EDGE_VER) or horizontal edges

[1161] (EDGE_HOR),

[1162] – The variable cIdx, which specifies the current color component,

[1163] – The reconstructed picture before deblocking recPicture,

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

[1165] – The variable nCbW, which specifies the width of the current coding / decoding block,

[1166] – The variable nCbH, which specifies the height of the current coding / decoding block,

[1167] – The array bS specifies the boundary strength,

[1168] – The arrays maxFilterLengthPs and maxFilterLengthQs.

[1169] The output of this process is the modified reconstructed picture after deblocking the reconstructed picture.

[1170] …

[1171] – 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:

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

[1173]

[1174] 2.

[1175]

[1176] 3. Invoke the edge decision process for chrominance blocks specified in Clause 8.8.3.6.3, where 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 are used as inputs, and the modified variable maxFilterLengthCbCr and the variable t

[1177] are used as outputs. C as the output.

[1178] 4. When maxFilterLengthCbCr is greater than 0, then invoke the filtering process for chrominance block edges specified in Clause 8.8.3.6.4, where 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 the variable t C as input, and the modified chroma picture sample array recPicture as output.

[1179]

[1180] 8.8.3.6.3 Decision Process for Chroma Block Edges

[1181] This process is called only if ChromaArrayType is not equal to 0.

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

[1183] – The chroma picture sample array recPicture,

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

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

[1186] – The variable edgeType, specifying whether it is a filtered vertical (EDGE_VER) or horizontal (EDGE_HOR) edge, –

[1187] – The variable cQpPicOffset, specifying the picture-level chroma quantization parameter offset,

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

[1189] – The variable maxFilterLengthCbCr.

[1190] The outputs of this process are

[1191] – The modified variable maxFilterLengthCbCr,

[1192] – The variable t C .

[1193] The variable maxK is derived as follows:

[1194] – If edgeType is equal to EDGE_VER, then the following is applied:

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

[1196] – Otherwise (edgeType is equal to EDGE_HOR), the following is applied:

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

[1198] For i = 0..maxFilterLengthCbCr and k = 0..maxK, the values p i and q i are derived as follows:

[1199] – If edgeType equals EDGE_VER, then it is applied as follows:

[1200]

[1201] subSampleC = SubHeightC (8 - 1128)

[1202] – Otherwise (edgeType equals EDGE_HOR), it is applied as follows:

[1203]

[1204] subSampleC = SubWidthC (8 - 1131)

[1205] The variable Qp Q and Qp P are set to be equal to the Qp values of the codec units of the codec blocks that respectively contain the samples q 0,0 and p 0,0 . Y Value.

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

[1207]

[1208]

[1209] Note – The variable cQpPicOffset provides an adjustment to the value of pps_cb_qp_offset or pps_cr_qp_offset depending on whether the filtered chrominance component is the Cb or Cr component. However, to avoid the need to change the amount of adjustment within the picture, the filtering process does not include an adjustment to the value of slice_cb_qp_offset or slice_cr_qp_offset, nor does it include (when cu_chroma_qp_offset_enabled_flag equals 1) an adjustment to CuQpOffset Cb 、CuQpOffset Cr or CuQpOffsetCbCr value

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

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

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

[1213] the value of slice_beta_offset_div2

[1214] Variable β is derived as follows:

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

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

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

[1218] (8-1136)

[1219] where slice_tc_offset_div2 is the syntax element of the slice containing sample q 0,0 of the slice slice_tc_offset_div2's value

[1220] Variable t C is derived as follows:

[1221] t C = (BitDepth C < 10)? (t C ′ + 2)>>(10 - BitDepth C ):

[1222] t C ′ * (1 << (BitDepth C - 8)) (8-1137)

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

[1224] When maxFilterLengthCbCr is equal to 3, the following ordered steps are applied:

[1225] 1. The variables n1, and are derived as follows:

[1226] n1 = (subSampleC == 2)? 1 : 3 (8 - 1138)

[1227]

[1228]

[1229]

[1230] 3. Both variables dSam0 and dSam1 are set to be equal to 0.

[1231] 4. When d is less than β, the following ordered steps are applied:

[1232] a. The variable dpq is set to be equal to 2 * dpq0.

[1233] b. The variable dSam0 is derived by calling the decision process for the chrominance samples specified for the sample position (xCb + xBl, yCb + yBl) in Clause 8.8.3.6.8, where

[1234] the sample values are p 0,0 、p 3,0 、q 0,0 and q 3,0 、the variables dpq, β, and tC are used as inputs, and the output is assigned to dSam0.

[1235] c. The variable dpq is set to be equal to 2 * dpq1.

[1236] d. The variable dSam1 is modified as follows:

[1237] – If edgeType is equal to EDGE_VER, for the sample position (xCb + xBl, yCb + yBl + n1), call the decision process for the chrominance samples 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 、the variables dpq, β, and t CAs input, and the output is assigned to decision dSam1.

[1238] – Otherwise (edgeType equals EDGE_HOR), for f or the sample position (xCb + xBl + n1, yCb + yBl), call the decision process for chroma samples specified in Clause 8.8.3.6.8, where the sample values p 0,n1 and p 3,n1 and q 0,n1 and q 3,n1 and the variables dpq, β, and t C are used as input, and the output is assigned to decision dSam1.

[1239] 5. The variable maxFilterLengthCbCr is modified as follows:

[1240] – If dSam0 equals 1 and dSam1 equals 1, then maxFilterLengthCbCr is set to equal 3.

[1241] – Otherwise, maxFilterLengthCbCr is set to equal 1.

[1242] 8.8.3.6.4 Filtering Process for Chroma Block Edges

[1243] This process is called only if ChromaArrayType is not equal to 0.

[1244] The inputs to this process are:

[1245] – The chroma picture sample array recPicture,

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

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

[1248] – The variable edgeType, specifying whether to filter the vertical (EDGE_VER) or horizontal (EDGE_HOR) edge – The variable maxFilterLengthCbCr, containing the maximum chroma filter length,

[1249] 6. The variable cIdx, specifying the color component index,

[1250] – The variable tC.

[1251] The output of this process is the modified chroma picture sample array recPicture.

[1252] …

[1253] For i = 0..maxFilterLengthCbCr and k = 0..maxK, the values pi and qi are derived as follows: – If edgeType is equal to EDGE_VER, then the following is applied:

[1254]

[1255] – Otherwise (edgeType is equal to EDGE_HOR), the following is applied:

[1256]

[1257] Depending on the value of edgeType, the following is applied:

[1258] – If edgeType is equal to EDGE_VER, for each sample position (xCb + xBl, yCb + yBl + k), k = 0..maxK, the following ordered steps are applied:

[1259] 1. Call the filtering process for chrominance samples specified in Article 8.8.3.6.9, where the variables maxFilterLengthCbCr, the sample values p i,k , q i,k , for the positions (xCb + xBl - i - 1, yCb + yBl + k) and (xCb + xBl + i, yCb + yBl + k) for i = 0..maxFilterLengthCbCr - 1, and the variable t C are used as inputs, and the filtered sample values p i ′ and q i ′ for i = 0..maxFilterLengthCbCr - 1 are used as outputs.

[1260] 2. Replace the corresponding samples in the sample array recPicture with the filtered sample values p i ′ and q i ′ for i = 0..maxFilterLengthCbCr - 1 as follows:

[1261]

[1262] – Otherwise (edgeType is equal to EDGE_HOR), for each sample position (xCb + xBl + k, yCb + yBl), k = 0..maxK, the following ordered steps are applied:

[1263] 1. Invoke the filtering process of the chrominance samples specified in Article 8.8.3.6.9, where the variable maxFilterLengthCbCr, the sample values p for i = 0..maxFilterLengthCbCr i,k , q i,k , the positions (xCb + xBl + k, yCb + yBl - i - 1) and (xCb + xBl + k, yCb + yBl + i), and the variable t C are used as inputs, and the filtered sample values p i ' and q i ' are used as outputs.

[1264] 2. Replace the corresponding samples inside the sample array recPicture with the filtered sample values p i ' and q i ' as follows:

[1265]

[1266] 5.11. Example #11

[1267] 8.8.3.6.3 Determination process of chrominance block edges

[1268] …

[1269]

[1270] –

[1271] –

[1272]

[1273] –

[1274]

[1275]

[1276] 5.12 Example #12

[1277] 8.8.3.6.3 Determination process of chrominance block edges

[1278] …

[1279]

[1280] …

[1281] 5.13 Embodiment #13

[1282] This embodiment is based on JVET - P2001 - vE. The newly added text is highlighted as underlined bold italic text. The deleted text is marked as underlined bold text.

[1283] Decision process for chroma block edges

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

[1285] The inputs to this process are:

[1286] – The chroma picture sample array recPicture,

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

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

[1289] – The variable edgeType, specifying whether it is a filtering vertical (EDGE_VER) or horizontal (EDGE_HOR) edge, – The variable cIdx, specifying the color component index,

[1290] – The variable bS, specifying the boundary filtering strength,

[1291] – The variable maxFilterLengthP, specifying the maximum filtering length,

[1292] – The variable maxFilterLengthQ, specifying the maximum filtering length.

[1293] The outputs of this process are

[1294] – The modified filtering length variables maxFilterLengthP and maxFilterLengthQ,

[1295] – The variable t C .

[1296] …

[1297] The variable Qp P is derived as follows:

[1298] – The luma position (xTb P , xTb P ) is set to the top - left luma sample position of the transform block containing sample p 0,0 relative to the top - left luma sample of the picture.

[1299] – If TuCResMode[xTbP][yTbP] is equal to 2, then Qp P is set to be equal to Qp′ of the transform block containing sample p 0,0 . CbCr .

[1300] –

[1301] – Otherwise, if cIdx is equal to 1 is equal to 0

[1302] then Qp P is set to be equal to Qp′ of the transform block containing sample p 0,0 . Cb .

[1303] – Otherwise, Qp P is set to be equal to Qp′ of the transform block containing sample p 0,0 . Cr .

[1304] –

[1305] The variable Qp Q is derived as follows:

[1306] – The luminance position (xTb Q, xTb Q ) is set to the top-left luminance sample position of the transform block containing sample q 0,0 relative to the top-left luminance sample of the picture.

[1307] – 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 q 0,0 . CbCr .

[1308] –

[1309] – Otherwise, if cIdx is equal to 1 is equal to 0

[1310] then Qp Q is set to be equal to Qp′ of the transform block containing sample q 0,0 . Cb .

[1311] – Otherwise, Qp QSet to be equal to the Qp' of the transform block containing sample q 0,0 of the transform block containing sample q Cr .

[1312] – – variable Qp C is derived as follows:

[1313] Qp C =(Qp Q - QpBdOffset + Qp P - QpBdOffset + 1) >> 1 (1321)

[1314] …

[1315] 5.14 Example #14

[1316] This example is based on JVET - P2001 - vE. Newly added text is highlighted in gray. Deleted text is marked with bold underlined text.

[1317] Decision process for chroma block edges

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

[1319] The inputs to this process are:

[1320] – chroma picture sample array recPicture,

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

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

[1323] – variable edgeType, specifying whether it is a filtering vertical (EDGE_VER) or horizontal (EDGE_HOR) edge, – variable cIdx, specifying the color component index,

[1324] – variable bS, specifying the boundary filtering strength,

[1325] – variable maxFilterLengthP, specifying the maximum filtering length,

[1326] – variable maxFilterLengthQ, specifying the maximum filtering length.

[1327] The outputs of this process are

[1328] – The modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1329] – The variable t C 。

[1330] …

[1331] The variable Qp P is derived as follows:

[1332] – The luminance position (xTb P , xTb P ) is set to the top-left luminance sample position of the transform block that contains sample p 0,0 with respect to the top-left luminance sample of the picture.

[1333] – If TuCResMode[xTbP][yTbP] is equal to 2, then Qp P is set to be equal to Qp′ 0,0 of the transform block that contains sample p CbCr 。

[1334] –

[1335] – Otherwise, if cIdx is equal to 1, is equal to 0,

[1336] then Qp P is set to be equal to Qp′ 0,0 of the transform block that contains sample p Cb 。

[1337] – Otherwise, Qp P is set to be equal to Qp′ 0,0 of the transform block that contains sample p Cr 。

[1338] –

[1339] The variable Qp Q is derived as follows:

[1340] – The luminance position (xTb Q, xTb Q ) is set to the top-left luminance sample position of the transform block that contains sample q 0,0 with respect to the top-left luminance sample of the picture.

[1341] – If TuCResMode[xTb Q [yTb Q is equal to 2, then Qp Q is set to be equal to the Qp of the transform block that contains sample q0,0 Qp′ of the transform block CbCr .

[1342] –

[1343] – Otherwise, if cIdx is equal to 1, is equal to 0,

[1344] Then Qp Q Set equal to the sample q 0,0 Qp′ of the transform block Cb .

[1345] – Otherwise, Qp Q Set equal to the sample q 0,0 Qp′ of the transform block Cr .

[1346] – – Variable Qp C The derivation is as follows:

[1347] Q C =(Qp Q -QpBdOffset+Qp P -QpBdOffset+1)>>1 (1321)

[1348] …

[1349] 5.15 Example #15

[1350] Down Figure 17 The proposed control logic is shown.

[1351] 7.3.2.6 Picture Header RBSP Syntax

[1352]

[1353]

[1354] 7.3.7.1 Generic Strip Header Syntax

[1355]

[1356] 5.16 Example #16

[1357] 7.3.2.4 Picture parameter set RBSP syntax

[1358]

[1359]

[1360] 7.3.2.6 Picture Header RBSP Syntax

[1361]

[1362] 7.3.7.1 General Slice Header Syntax

[1363]

[1364]

[1365] 7.4.3.4 Picture Parameter Set RBSP Semantics

[1366] and specify the default deblocking parameter offsets (divided by 2) for β and tC of the Cb component of slices applied to the reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the slice header of slices of the reference PPS. The values of pps_beta_offset_div2 and pps_tc_offset_div2 shall each 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.

[1367] and specify the default deblocking parameter offsets (divided by 2) for β and tC of the Cr component of slices applied to the reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the slice header of slices of the reference PPS. The values of pps_beta_offset_div2 and pps_tc_offset_div2 shall each 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.

[1368] 7.4.3.6 Picture Header

[1369] and Specify the deblocking parameter offsets (divided by 2) of β and tC applied to the Cb component of the strip associated with PH. The values of pic_beta_offset_div2 and pic_tc_offset_div2 should be in the range of -6 to 6 (inclusive). 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.

[1370] and Specify the deblocking parameter offsets (divided by 2) of β and tC applied to the Cr component of the strip associated with PH. The values of pic_beta_offset_div2 and pic_tc_offset_div2 should be in the range of -6 to 6 (inclusive). 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.

[1371] 7.4.8.1 General strip header semantics

[1372] and Specify the deblocking parameter offsets (divided by 2) of β and tC applied to the Cb component of the current strip. The values of slice_beta_offset_div2 and slice_tc_offset_div2 should both be in the range of -6 to 6 (inclusive). When absent, 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.

[1373] and Specify the deblocking parameter offsets (divided by 2) of β and tC applied to the Cb component of the current strip. The values of slice_beta_offset_div2 and slice_tc_offset_div2 should both be in the range of -6 to 6 (inclusive). When absent, 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.

[1374] 8.8.3.6.3 Determination Process of Chrominance Block Edge

[1375] …

[1376] The value of variable β′ is determined based on the quantization parameter Q derived as follows and specified in Table 41:

[1377]

[1378] ■

[1379]

[1380] ■

[1381]

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

[1383] the value of slice_beta_offset_div2

[1384] Variable β is derived as follows:

[1385] β = β′ * (1 << (BitDepth - 8)) (1323)

[1386] Variable t C ′s value is determined based on the chrominance quantization parameter Q derived as follows and specified in Table 41:

[1387] ■

[1388]

[1389] ■

[1390]

[1391] …

[1392] 5.17 Example #17

[1393] This example follows Example #15 immediately

[1394] 7.3.2.4 Picture Parameter Set RBSP Syntax

[1395]

[1396] 7.3.7.1 General Slice Header Syntax

[1397]

[1398] 7.4.3.4 Picture Parameter Set RBSP semantics

[1399] and Specify the default deblocking parameter offsets (divided by 2) for β and tC of the Cb component of the slices applied to 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 absent, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[1400] and Specify the default deblocking parameter offsets (divided by 2) for β and tC of the Cr component of the slices applied to 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 absent, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[1401] 7.4.8.1 General slice header semantics

[1402] and Specify the deblocking parameter offsets (divided by 2) for β and tC of 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 absent, 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.

[1403] slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for β and tc applied to the Cb component of the current slice. The values of both slice_beta_offset_div2 and slice_tc_offset_div2 shall be in the range of 6 to 6, inclusive of 6 and 6. In the absence of these, 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.

[1404] 8.8.3.6.3 Decision process for chroma block edges

[1405] …

[1406] The value of the variable β′ is determined based on the quantization parameter Q derived as follows and specified in Table 41:

[1407]

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

[1409] The variable β is derived as follows:

[1410] β = β′ * (1 << (BitDepth - 8)) (1323)

[1411] The variable t C ′s value is determined based on the chroma quantization parameter Q derived as follows and specified in Table 41:

[1412]

[1413] …

[1414] 5.18 Example #18

[1415] This example is based on Example #17.

[1416] 7.4.3.4 Picture parameter set RBSP semantics

[1417] and Specify the default deblocking parameter offsets of β and tC applied to the Cb component of the current PPS (divided by 2). The values of pps_beta_offset_div2 and pps_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When absent, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[1418] and Specify the default deblocking parameter offsets of β and tC applied to the Cr component of the current PPS (divided by 2). The values of pps_beta_offset_div2 and pps_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When absent, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[1419] 7.4.8.1 General slice header semantics

[1420] and Specify the deblocking parameter offsets of β and tC applied to the Cb component of the current slice (divided by 2). The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -6 to 6, inclusive.

[1421] and Specify the deblocking parameter offsets of β and tC applied to the Cr component of the current slice (divided by 2). The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -6 to 6, inclusive.

[1422] 8.8.3.6.1 Decision process for luma block edges

[1423] …

[1424] The value of the variable β′ is determined based on the quantization parameter Q derived as follows and specified in Table 41:

[1425]

[1426] 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.

[1427] The variable β is derived as follows:

[1428] β = β' * (1 << (BitDepth - 8)) (1263)

[1429] Variable t C The value of ' is determined based on the quantization parameter Q derived as follows and specified in Table 41:

[1430]

[1431] …

[1432] 8.8.3.6.3 Decision Process for Chrominance Block Edges

[1433] …

[1434] The value of variable β' is determined based on the quantization parameter Q derived as follows and specified in Table 41:

[1435]

[1436] ■

[1437]

[1438] ■

[1439] 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.

[1440] Variable β is derived as follows:

[1441] β = β' * (1 << (BitDepth - 8)) (1323)

[1442] The value of variable tC’ is determined based on the quantization parameter Q derived as follows and specified in Table 41:

[1443] ■

[1444]

[1445] ■

[1446]

[1447] …

[1448] 5.19 Example #19

[1449] This embodiment is related to ACT.

[1450] Equal to 1 indicates that BDPCM is applied to the current chroma coding / decoding 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. Equal to 0 for intra_bdpcm_chroma_flag indicates that BDPCM is not applied to the current chroma coding / decoding block at position (x0, y0).

[1451] When intra_bdpcm_chroma_flag does not exist,

[1452] For x = x0..x0 + cbWidth - 1, y = y0..y0 + cbHeight – 1 and cIdx = 1..2, the variable BdpcmFlag[x][y][cIdx] is set to be equal to intra_bdpcm_chroma_flag.

[1453] Equal to 0 indicates that the BDPCM prediction direction is horizontal. Equal to 1 for intra_bdpcm_chroma_dir_flag specifies that the BDPCM prediction direction is vertical.

[1454]

[1455] For x = x0..x0 + cbWidth - 1, y = y0..y0 + cbHeight – 1 and cIdx = 1..2, the variable BdpcmDir[x][y][cIdx] is set to be equal to intra_bdpcm_chroma_dir_flag.

[1456] 5.20 Embodiment #20

[1457] This embodiment relates to QP derivation for deblocking.

[1458] 8.8.3.6.1 Decision process for luminance block edges

[1459] The inputs to this process are:

[1460] – The picture sample array recPicture,

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

[1462] – Position (xBl, yBl), specifying the top - left sample of the current block relative to the top - left sample of the current coding block

[1463] – Variable edgeType, specifying whether it is a vertical (EDGE_VER) or horizontal (EDGE_HOR) filtering edge, – Variable bS, specifying the boundary filtering strength

[1464] – Variable maxFilterLengthP, specifying the maximum filtering length

[1465] – Variable maxFilterLengthQ, specifying the maximum filtering length.

[1466] The output of this process is:

[1467] – Variables dE, dEp, and dEq, containing decisions

[1468] – Modified filtering length variables maxFilterLengthP and maxFilterLengthQ

[1469] – Variable t C .

[1470] …

[1471]

[1472]

[1473] …

[1474] 8.8.3.6.3 Decision Process for Chroma Block Edges

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

[1476] The input of this process is:

[1477] – Chroma picture sample array recPicture

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

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

[1480] – Variable edgeType, specifying whether it is a vertical (EDGE_VER) or horizontal (EDGE_HOR) filtering edge, – Variable cIdx, specifying the color component index

[1481] – Variable bS, specifying the boundary filtering strength,

[1482] – Variable maxFilterLengthP, specifying the maximum filtering length,

[1483] – Variable maxFilterLengthQ, specifying the maximum filtering length.

[1484] The output of this process is

[1485] – The modified filtering length variables maxFilterLengthP and maxFilterLengthQ,

[1486] – Variable t C 。

[1487] …

[1488] Variable Qp P is derived as follows:

[1489] – The luminance position (xTb P , xTb P ) is set to the top-left luminance sample position of the transform block containing sample p 0,0 relative to the top-left luminance sample of the picture.

[1490] – If TuCResMode[xTbP][yTbP] equals 2, then Qp P is set to be equal to Qp′ 0,0 of the transform block containing sample p CbCr 。

[1491] – Otherwise, if cIdx equals 1, then Qp P is set to be equal to Qp′ 0,0 of the transform block containing sample p Cb 。– Otherwise, Qp P is set to be equal to Qp′ 0,0 of the transform block containing sample p Cr 。

[1492]

[1493] Variable Qp Q is derived as follows:

[1494] – The luminance position (xTb Q, xTb Q ) is set to the top-left luminance sample position of the transform block containing sample q 0,0 relative to the top-left luminance sample of the picture.

[1495] – If TuCResMode[xTb Q[yTb Q If it is equal to 2, then Qp Q is set to be equal to Qp′ of the transform block containing sample q 0,0 . CbCr .

[1496] – Otherwise, if cIdx is equal to 1, then Qp Q is set to be equal to Qp′ of the transform block containing sample q 0,0 .– Otherwise, Qp Cb is set to be equal to Qp′ of the transform block containing sample q Q . 0,0 . Cr .

[1497]

[1498] – The variable Qp C is derived as follows:

[1499] Qp C =(Qp Q -QpBdOffset + Qp P -QpBdOffset + 1) >> 1 (1321)

[1500] 5.21 Example #21

[1501] This example relates to QP derivation for deblocking.

[1502] 8.8.3.6.1 Decision Process for Luma Block Edges

[1503] The inputs to this process are:

[1504] – The picture sample array recPicture,

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

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

[1507] – The variable edgeType, specifying whether it is a filtering vertical (EDGE_VER) or horizontal (EDGE_HOR) edge, – The variable bS, specifying the boundary filtering strength,

[1508] – The variable maxFilterLengthP, specifying the maximum filtering length,

[1509] – The variable maxFilterLengthQ, specifying the maximum filtering length.

[1510] The outputs of this process are:

[1511] – Variables dE, dEp, and dEq, containing decisions,

[1512] – Modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1513] – Variable t C .

[1514] …

[1515] Variable Qp Q and Qp P are set to be equal to the Qp 0,0 and p 0,0 values of the codec units of the codec blocks respectively containing samples q Y and p.

[1516]

[1517]

[1518] …

[1519] 8.8.3.6.3 Decision Process for Chroma Block Edges

[1520] This process is called only if ChromaArrayType is not equal to 0.

[1521] The inputs of this process are:

[1522] – Chroma picture sample array recPicture,

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

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

[1525] – Variable edgeType, specifying whether it is a filtering vertical (EDGE_VER) or horizontal (EDGE_HOR) edge, – Variable cIdx, specifying the color component index,

[1526] – Variable bS, specifying the boundary filtering strength,

[1527] – Variable maxFilterLengthP, specifying the maximum filter length,

[1528] – Variable maxFilterLengthQ, specifying the maximum filter length.

[1529] The outputs of this process are

[1530] – The modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1531] – The variable t C .

[1532] …

[1533] The variable Qp P is derived as follows:

[1534] – The luma position (xTb P , xTb P ) is set to the luma sample position of the top-left of the transform block containing sample p relative to the top-left luma sample of the picture 0,0 .

[1535] – If TuCResMode[xTbP][yTbP] equals 2, then Qp P is set to be equal to Qp′CbCr of the transform block containing sample p 0,0 .

[1536] – Otherwise, if cIdx equals 1, then Qp P is set to be equal to Qp′ of the transform block containing sample p 0,0 . – Otherwise, Qp Cb is set to be equal to Qp′ of the transform block containing sample p P . 0,0 . Cr .

[1537]

[1538]

[1539] The variable Qp Q is derived as follows:

[1540] – The luma position (xTb Q, xTb Q ) is set to the luma sample position of the top-left of the transform block containing sample q 0,0 relative to the top-left luma sample of the picture

[1541] – If TuCResMode[xTb Q [yTb Q equals 2, then Qp Q is set to be equal to Qp′ of the transform block containing sample q 0,0 . CbCr .

[1542] – Otherwise, if cIdx equals 1, then Qp Q is set to be equal to Qp′ of the transform block containing sample p 0,0 . – Otherwise, Qp Cb is set to be equal to Qp′ of the transform block containing sample q Q . 0,0 . Cr

[1543]

[1544] – The variable Qp C is derived as follows:

[1545] Qp C = (Qp Q - QpBdOffset + Qp P - QpBdOffset + 1) >> 1 (1321)

[1546] 5.22 Example #22

[1547] This example relates to CC-ALF. The newly added text on top of the draft provided in JVET-Q0058 is highlighted in underlined bold italic text.

[1548] 7.3.2.6 Picture Header RBSP Syntax

[1549]

[1550]

[1551] Optionally, the newly added "ChromaArrayType!= 0" can be replaced with "chroma_format_idc!= 0"

[1552] 5.23 Example #23

[1553] This example relates to CC-ALF. The newly added text on top of the draft provided in JVET-Q0058 is highlighted in underlined bold italic text.

[1554] 7.3.2.3 Sequence Parameter Set RBSP Syntax

[1555]

[1556]

[1557] Semantics

[1558] ​

[1559] Optionally, it can be applied as follows:

[1560]

[1561] Optionally, it can be applied as follows:

[1562]

[1563] Optionally, it can be applied as follows:

[1564]

[1565] Semantics

[1566]

[1567] 7.3.3.2 General Constraint Information Syntax

[1568]

[1569]

[1570] 7.3.2.6 Picture Header RBSP Syntax

[1571]

[1572]

[1573]

[1574] Optionally, it can be applied as follows:

[1575]

[1576]

[1577] Optionally, it can be applied as follows:

[1578]

[1579]

[1580]

[1581] 5.24 Example #24

[1582] This example involves advanced syntax and is based on JVET-P2001-vE. The newly added text is highlighted in underlined bold italic text. The deleted text is marked with underlined bold text.

[1583] 7.3.2.3 Sequence Parameter Set RBSP Syntax

[1584]

[1585] 5.1 Example #25

[1586] This example relates to the advanced syntax and is based on JVET-P2001-vE. The newly added text is highlighted in underlined bold italic text. The deleted text is marked with underlined bold text.

[1587] Equal to 1 indicates that intra_bdpcm_chroma_flag may exist in the coding unit syntax of the intra-coded unit. sps_bdpcm_chroma_enabled_flag equal to 0 indicates that intra_bdpcm_chroma_flag does not exist in the coding unit syntax of the intra-coded unit. When it does not exist, the value of sps_bdpcm_chroma_enabled_flag is inferred to be equal to 0.

[1588]

[1589] Equal to 1 indicates that pred_mode_plt_flag may exist in the coding unit syntax. sps_palette_enabled_flag equal to 0 indicates that pred_mode_plt_flag does not exist in the coding unit syntax. When sps_palette_enabled_flag does not exist, it is inferred to be equal to 0.

[1590]

[1591] Equal to 1 indicates that adaptive color transformation can be used and cu_act_enabled_flag may exist in the coding unit syntax. sps_act_enabled_flag equal to 0 indicates that adaptive color transformation is not used and cu_act_enabled_flag does not exist in the coding unit syntax. When sps_act_enabled_flag does not exist, it is inferred to be equal to 0.

[1592]

[1593] 6. Example Implementations of the Disclosed Technology

[1594] Figure 12is a block diagram of a video processing apparatus 1200. The apparatus 1200 can be used to implement one or more 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 (s) processor(s) 1202 can be configured to implement one or more methods described in this document. The (s) 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 signaling processing circuitry).

[1595] 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 and vice versa, a video compression algorithm can be applied. 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 coded error residual values and also using bits in the headers and other fields in the bitstream.

[1596] 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.

[1597] Figure 13 is a flowchart of an example method 1300 of video processing. The method 1300 includes, at 1310, performing a conversion between a video unit and a coded representation of the video unit, wherein during the conversion, deblocking filtering is used at the boundaries of the video unit such that when using a chrominance quantization parameter (QP) table to derive the parameters of the deblocking filtering, processing is performed on individual chrominance QP values through the chrominance QP table.

[1598] Figure 18 is a block diagram showing an example video coding and decoding system 100 that can utilize the techniques of the present invention.

[1599] As Figure 18 shown, the video coding and decoding system 100 can include a source device 110 and a destination device 120. The source device 110 generates coded video data that can be referred to as a video coding device. The destination device 120 can decode the coded video data generated by the source device 110 that can be referred to as a video decoding device.

[1600] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.

[1601] The video source 112 may 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 may include one or more pictures. The video encoder 114 encodes the video data from the video source 112 to generate a bitstream. The bitstream may include a sequence of bits forming a coded representation of the video data. The bitstream may include coded pictures and associated data. The coded pictures are the coded representations of the pictures. The associated data may include sequence parameter sets, picture parameter sets, and other syntax structures. The I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. The encoded video data may be directly transmitted to the destination device 120 via the I / O interface 116 over the network 130a. The encoded video data may also be stored on the storage medium / server 130b for access by the destination device 120.

[1602] The destination device 120 may include an I / O interface 126, a video decoder 124, and a display device 122.

[1603] The I / O interface 126 may include a receiver and / or a modem. The I / O interface 126 may obtain the encoded video data from the source device 110 or the storage medium / server 130b. The video decoder 124 may decode the encoded video data. The display device 122 may display the decoded video data to a user. The display device 122 may be integrated with the destination device 120 or may be external to the destination device 120 configured to connect to an external display device.

[1604] The video encoder 114 and the video decoder 124 may 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.

[1605] Figure 19 is to show that it can be Figure 18 A block diagram of an example of a video encoder 200 that can be the video encoder 114 in the system 100 shown.

[1606] The video encoder 200 may be configured to perform any or all of the techniques of the present invention. In Figure 19 the example, the video encoder 200 includes a plurality of functional components. The techniques described in the present invention may be shared among various components of the video encoder 200. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.

[1607] 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 transformation unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transformation unit 211, a reconstruction unit 212, a buffer 213, and an entropy encoding unit 214.

[1608] In other examples, video encoder 200 may include more, fewer, or different functional components. In an example, prediction unit 202 may include an intra block copy (IBC) unit. The IBC unit may perform prediction in an IBC mode in which at least one of the reference pictures is the picture in which the current video block is located.

[1609] In addition, some components (e.g., motion estimation unit 204 and motion compensation unit 205) may be highly integrated but are shown separately in the Figure 19 example for explanatory purposes.

[1610] Partitioning unit 201 may partition a picture into one or more video blocks. Video encoder 200 and video decoder 300 may support multiple video block sizes.

[1611] Mode selection unit 203 may select (e.g.) one of the encoding / decoding modes (intra or inter) based on an error result, 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) modes, where the prediction is based on both inter prediction signaling and intra prediction signaling. 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 precision).

[1612] To perform inter prediction on a current video block, 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. Motion compensation unit 205 may determine a predicted video block for the current video block based on motion information and decoded samples from pictures in buffer 213 other than the picture associated with the current video block.

[1613] Motion estimation unit 204 and 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, P-slice, or B-slice.

[1614] In some examples, the motion estimation unit 204 may perform uni-directional prediction on a 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. The motion estimation unit 204 may then generate a reference index and a motion vector, where the reference index indicates the reference pictures in list 0 and list 1 that contain the reference video block, and the motion vector indicates the spatial displacement between the current video block and the reference video block. The motion estimation unit 204 may output the reference index, the 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 of the current block based on the reference video block indicated by the motion information of the current video block.

[1615] In other examples, the motion estimation unit 204 may perform bi-directional prediction on a 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. The motion estimation unit 204 may then generate a reference index and a motion vector, where the reference index indicates the reference pictures in list 0 and list 1 that contain the reference video block, and the motion vector indicates the spatial displacement between the reference video block and the current 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 of the current video block based on the reference video block indicated by the motion information of the current video block.

[1616] In some examples, the motion estimation unit 204 may output a full set of motion information for the decoding process of the decoder.

[1617] In some examples, the motion estimation unit 204 may not output the complete set of motion information of 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.

[1618] In one example, the motion estimation unit 204 may indicate in the syntax structure associated with the current video block a value that indicates to the video decoder 300 that the current video block has the same motion information as another video block.

[1619] In another example, the motion estimation unit 204 may identify another video block and a motion vector difference (MVD) in the 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.

[1620] 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.

[1621] The intra prediction unit 206 may perform intra prediction on a 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.

[1622] The residual generation unit 207 may generate residual data for the current video block by subtracting (e.g., indicated by a negative sign) the (multiple) predicted video blocks 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.

[1623] In other examples, the current video block may not have residual data for the current video block (e.g., in skip mode), and the residual generation unit 207 may not perform a subtraction operation.

[1624] 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.

[1625] 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.

[1626] The inverse quantization unit 210 and the inverse transform unit 211 may apply inverse quantization and inverse transform to the transform coefficient video block, respectively, to reconstruct the residual video block from the transform coefficient video block. The reconstruction unit 212 may add the reconstructed residual video block to the corresponding samples of one or more predicted video blocks generated by the prediction unit 202 to produce a reconstructed video block associated with the current block for storage in the buffer 213.

[1627] After the reconstruction unit 212 reconstructs the video block, a loop filtering operation may be performed to reduce the block effect in the video block.

[1628] The entropy coding unit 214 may receive data from other functional components of the video encoder 200. When the entropy coding unit 214 receives data, the entropy coding unit 214 may perform one or more entropy coding operations to generate entropy-coded data and output a bitstream including the entropy-coded data.

[1629] Some embodiments of the disclosed techniques include making a decision or determination to enable a video processing tool or mode. In an example, when a video processing tool or mode is enabled, the encoder will use or implement the tool or mode in the processing of video blocks, 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 video blocks to a video bitstream will use the 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 video bitstream to video blocks will be performed using the video processing tool or mode enabled based on the decision or determination.

[1630] Figure 20 is shown to be Figure 18 A block diagram of an example of a video decoder 300 of the video decoder 114 in the system 100 shown.

[1631] The video decoder 300 may be configured to perform any or all of the techniques of the present invention. In Figure 20 an example, the video decoder 300 includes a plurality of functional components. The techniques described in this disclosure may be shared among various components of the video decoder 300. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.

[1632] In Figure 20 an example, 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, and a reconstruction unit 306 and a buffer 307. The video decoder 300 may, in some examples, perform a decoding channel generally reciprocal to the encoding channel described for the video encoder 200 ( Figure 19 ).

[1633] 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 from the entropy-decoded video data, which includes motion vectors, motion vector precision, reference picture list indices, and other motion information. The motion compensation unit 302 may determine this information (e.g.) by performing AMVP and Merge modes.

[1634] The motion compensation unit 302 may generate motion-compensated blocks and may perform interpolation based on interpolation filtering. The syntax elements may include identifiers for the interpolation filtering to be used with sub-pixel precision.

[1635] The motion compensation unit 302 may use the interpolation filtering as used by the video encoder 20 during the encoding of video blocks to calculate the interpolated values of sub-integer pixels of a reference block. The motion compensation unit 302 may determine the interpolation filtering used by the video encoder 200 according to the received syntax information and use the interpolation filtering to generate a prediction block.

[1636] The motion compensation unit 302 may use some syntax information to determine the size of the blocks for encoding the (multiple) frames and / or (multiple) slices of an 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.

[1637] The intra prediction unit 303 may form a prediction block from spatially neighboring blocks using, for example, an intra prediction mode received in the bitstream. The inverse quantization unit 303 inverse quantizes (i.e., dequantizes) 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.

[1638] The reconstruction unit 306 may add a 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, deblocking filtering may also be applied to filter the decoded block to remove blocking artifacts. The decoded video block is then stored in the buffer 307, which provides reference blocks for subsequent motion compensation / intra prediction and also produces the decoded video for presentation on a display device.

[1639] Figure 21 is a block diagram illustrating an example video processing system 1900 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 1900. System 1900 may include an input 1902 for receiving video content. The video content may be received in raw or uncompressed format (e.g., 8- or 10-bit multi-component pixel values) or may be in compressed or encoded format. The input 1902 may 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.

[1640] System 1900 may include an encoding / decoding component 1904 that may implement various encoding or decoding methods described in this document. The encoding / decoding component 1904 may reduce the average bit rate of a video from the input 1902 to the output of the encoding / decoding component 1904 to produce a bitstream representation of the video. Thus, encoding / decoding techniques are sometimes referred to as video compression or video transcoding techniques. As represented by component 1906, the output of the encoding / decoding component 1904 may be stored or transmitted via a connected communication. Component 1908 may use a stored or communicated bitstream (or encoded / decoded) representation of the video received at the input 1902 to generate pixel values or a displayable video that is sent to the display interface 1910. The process of generating a user-visible video from a bitstream is sometimes referred to as video decompression. Additionally, although certain video processing operations are referred to as "encoding / decoding" operations or tools, it should be understood that encoding tools or operations are used at the encoder and corresponding decoding tools or operations to reverse the encoding results will be performed by the decoder.

[1641] Examples of a peripheral bus interface or a display interface may include a Universal Serial Bus (USB), a High-Definition Multimedia Interface (HDMI), a DisplayPort, etc. Examples of a storage interface include Serial Advanced Technology Attachment (SATA), PCI, an IDE interface, etc. The techniques described in this document may be implemented in various electronic devices such as a mobile phone, a laptop computer, a smart phone, or other devices capable of performing digital data processing and / or video display.

[1642] Figure 22 is a flowchart of an example method 2200 of video processing. Operation 2202 includes performing a conversion between a video unit of a video and a bitstream of the video according to a rule, where the rule specifies whether to enable a cross-component adaptive loop filter (CC-ALF) mode and an adaptive loop filter (ALF) mode in the bitstream in an independent manner to encode / decode the video unit.

[1643] In some embodiments of method 2200, when the ALF mode is enabled for a video unit, a color space conversion is performed on the residual values of the video unit. In some embodiments of method 2200, when the CC-ALF tool is enabled for a video unit, the sample values of the video unit of a video component are filtered with the sample values of another video component of the video. In some embodiments of method 2200, the rule stipulates that a first syntax element selectively included in the bitstream indicates whether the CC-ALF mode is enabled for the video unit. In some embodiments of method 2200, the first syntax element is indicated at the sequence level or video level or picture level associated with the video unit, and the first syntax element is different from another syntax element included in the bitstream that indicates whether the ALF mode is enabled for the video unit. In some embodiments of method 2200, the first syntax element is included in the bitstream based on the ALF mode enabled for the video unit.

[1644] In some embodiments of method 2200, when the codec conditions are met, the first syntax element is included in the bitstream, where the codec conditions include: the type of the color format of the video, or whether separate plane coding is enabled for conversion, or the sample structure of the chrominance component of the video. In some embodiments of method 2200, the rule stipulates that the bitstream includes a second syntax element that indicates whether one or more syntax elements related to the CC-ALF mode are present in the picture header, and the second syntax element is included in the picture header or picture parameter set (PPS) or slice header. In some embodiments of method 2200, the rule stipulates that the bitstream includes the second syntax element based on the ALF mode enabled for the video unit.

[1645] In some embodiments of method 2200, ALF is a Wiener filter that takes adjacent samples as input. In some embodiments of method 2200, the rule stipulates that when the value of the chroma array time is not equal to zero or the color format of the video is not 4:0:0, and the bitstream includes a first syntax element indicating that the CC-ALF mode is enabled for the video unit (where the first syntax element is indicated for a video level higher than the video unit level of the video), the bitstream includes syntax elements in the picture header or picture parameter set (PPS) related to the CC-ALF mode. In some embodiments of method 2200, the rule stipulates that when the value of the chroma array time is not equal to zero or the color format of the video is not 4:0:0, or the bitstream includes a first syntax element indicating that the CC-ALF mode is enabled for the video unit (where the first syntax element is indicated for a video level higher than the video unit level of the video), the bitstream includes syntax elements in the picture header or picture parameter set (PPS) or slice header related to the CC-ALF mode. In some embodiments of method 2200, the video level includes the sequence parameter set (SPS).

[1646] 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 chrominance component of a video and a bitstream of the video, where the bitstream conforms to format rules, and where the format rules specify that the bitstream includes syntax elements that indicate whether cross-component filtering of the chrominance component is enabled for all stripes associated with a picture header only if the value of a chrominance array type is not equal to zero or the color format of the video is not 4:0:0.

[1647] In some embodiments of method 2300, the chrominance component includes a Cb chrominance component. In some embodiments of method 2300, the chrominance component includes a Cr chrominance component. In some embodiments of methods 2200 - 2300, the video unit includes a coding / decoding unit (CU), a prediction unit (PU), or a transform unit (TU). In some embodiments of methods 2200 - 2300, performing the conversion includes encoding the video into a bitstream. In some embodiments of methods 2200 - 2300, performing the conversion includes decoding the video from the bitstream. In some embodiments, a video decoding device includes a processor configured to implement the techniques of embodiments related to methods 2200 - 2300. In some embodiments, a video encoding device includes a processor configured to implement the techniques of embodiments related to methods 2200 - 2300. In some embodiments, a computer program product having computer instructions stored thereon, which when run by a processor cause the processor to implement the techniques of embodiments related to methods 2200 - 2300. In some embodiments, a computer-readable medium storing a bitstream generated according to the techniques of embodiments related to methods 2200 - 2300. In some embodiments, a video processing device for storing a bitstream, where the video processing device is configured to implement the techniques of embodiments related to methods 2200 - 2300.

[1648] Figure 24 It is a flowchart of an example method 2400 for video processing. Operation 2402 includes performing a conversion between a video unit of a video and a bitstream of the video according to a rule, where the rule specifies whether the bitstream includes at least one of control flags for a chrominance-based differential pulse code modulation (BDPCM) mode, a palette mode, or an adaptive color transform (ACT) mode based on the value of a chrominance array type of the video.

[1649] Some embodiments may be described using the following clause-based format. A first set of clauses shows example embodiments of the techniques discussed in the previous sections.

[1650] 1. A video processing method, comprising: performing a conversion between a video unit and a codec representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit, such that when using a chrominance quantization parameter (QP) table to derive parameters for the deblocking filtering, processing is performed on individual chrominance QP values through the chrominance QP table.

[1651] 2. The method according to clause 1, wherein, after processing through the chrominance QP table, a chrominance QP offset is added to the individual chrominance QP values.

[1652] 3. The method according to any one of clauses 1-2, wherein the chrominance QP offset is added to the value output by the chrominance QP table.

[1653] 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.

[1654] 5. The method according to clause 2, wherein the chrominance QP offset is at the picture level or at the video unit level.

[1655] 6. A video processing method, comprising: performing a conversion between a video unit and a codec representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit, such that a chrominance QP offset is used in the deblocking filtering, wherein the chrominance QP offset is at the picture / strip / slice / tile / sub-picture level.

[1656] 7. The method according to clause 6, wherein the chrominance QP offset used in the deblocking filtering is associated with the codec method applied at the boundary of the video unit.

[1657] 8. The method according to clause 7, wherein the codec method is a chrominance residual joint codec (JCCR) method.

[1658] 9. A video processing method, comprising: performing a conversion between a video unit and a codec representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit, such that a chrominance QP offset is used in the deblocking filtering, wherein information related to the same luma codec unit is used in the deblocking filtering and is used to derive the chrominance QP offset.

[1659] 10. The method according to clause 9, wherein the same luma codec unit covers the corresponding luma samples at the central position of the video unit, wherein the video unit is a chrominance codec unit.

[1660] 11. The method according to clause 9, wherein a scaling process is applied to the video unit, and wherein one or more parameters of the deblocking filtering depend at least in part on the quantization / dequantization parameters of the scaling process.

[1661] 12. The method according to clause 11, wherein the quantization / dequantization parameter of the scaling process includes a chrominance QP offset.

[1662] 13. The method according to any one of clauses 9-12, wherein the luminance samples in the video unit are on the P side or the Q side.

[1663] 14. The method according to clause 13, wherein the information related to the same luminance coding / decoding unit depends on the relative position of the coding / decoding unit with respect to the same luminance coding / decoding unit.

[1664] 15. A video processing method, comprising: performing a conversion between a video unit and a coded / decoded representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, and wherein an indication of enabling the use of the chrominance QP offset is signaled in the coded / decoded representation.

[1665] 16. The method according to clause 15, wherein the indication is signaled conditionally in response to detecting one or more flags.

[1666] 17. The method according to clause 16, wherein the one or more flags are related to a JCCR enabling flag or a chrominance QP offset enabling flag.

[1667] 18. The method according to clause 15, wherein the indication is signaled based on a derivation.

[1668] 19. A video processing method, comprising: performing a conversion between a video unit and a coded / decoded representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, and wherein the chrominance QP offset used in the deblocking filtering is the same whether the 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.

[1669] 20. A video processing method, comprising: performing a conversion between a video unit and a coded / decoded representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, and wherein the boundary strength (BS) of the deblocking filtering 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 and / or multiple motion vectors (MVs) associated with the video unit at the Q side.

[1670] 21. The method according to clause 20, wherein the deblocking filtering is disabled under one or more conditions.

[1671] 22. The method according to clause 21, wherein the one or more conditions are associated with the magnitude of a motion vector (MV) or a threshold value.

[1672] 23. The method according to clause 22, wherein the threshold value is associated with at least one of the following: i. the content of a video unit, ii. a message signaled in a DPS / SPS / VPS / PPS / APS / picture header / strip header / slice group header / maximum 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 video unit having samples along a boundary, vi. the shape or dimension of a video unit, vii. an indication of a color format, viii. a coding tree structure, 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.

[1673] 24. The method according to clause 20, wherein different QP offsets are used for video units coded with TS and video units not coded with TS.

[1674] 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.

[1675] The following items are preferably implemented by some embodiments. Additional features are shown in the list in the previous section, such as items 31 - 32.

[1676] 26. A video processing method, comprising: for a conversion between a video unit of a component of a video and a coded 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.

[1677] 27. The method according to clause 26, wherein the component is a chrominance component and K = 4.

[1678] 28. The method according to clause 26, wherein the component is a luminance component and K = 8.

[1679] 29. The method according to any one of clauses 1 - 28, wherein the conversion includes encoding the video into a coded representation.

[1680] 30. The method according to any one of clauses 1 - 28, wherein the conversion includes parsing and decoding the coded representation to generate the video.

[1681] 31. A video decoding device includes a processor configured to implement one or more of the methods described in clauses 1 to 30.

[1682] 32. A video encoding device includes a processor configured to implement one or more of the methods described in clauses 1 to 30.

[1683] The second set of clauses shows example embodiments of the techniques discussed in the previous section (items 42 - 43).

[1684] 1. A method for video processing includes: performing a conversion between a video unit of a video and a bitstream of the video according to a rule, where the rule specifies indicating whether to enable a cross-component adaptive loop filter (CC-ALF) mode and / or an adaptive loop filter (ALF) mode for encoding / decoding the video unit in a mutually independent manner in the bitstream.

[1685] 2. The method according to clause 1, wherein when the CC-ALF tool is enabled for a video unit, sample values of another video component of the video are used to filter sample values of the video unit of the video component.

[1686] 3. The method according to any one of clauses 1 to 2, wherein the rule specifies that a first syntax element selectively included in the bitstream indicates whether the CC-ALF mode is enabled for the video unit.

[1687] 4. The method according to clause 3, wherein the first syntax element is indicated at the sequence level or video level or picture level associated with the video unit, and wherein the first syntax element is different from another syntax element included in the bitstream that indicates whether the ALF mode is enabled for the video unit.

[1688] 5. The method according to clause 3, wherein the first syntax element is included in the bitstream based on the ALF mode enabled for the video unit.

[1689] 6. The method according to clause 3, wherein the first syntax element is included in the bitstream when codec conditions are met, where the codec conditions include: the type of color format of the video, or whether separate plane coding is enabled for conversion, or the sample structure of the chrominance component of the video.

[1690] 7. The method according to any one of clauses 1 to 2, wherein the rule specifies that the bitstream includes a second syntax element that indicates whether one or more syntax elements related to the CC-ALF mode are present in the picture header, and wherein the second syntax element is included in the picture header or picture parameter set (PPS) or slice header.

[1691] 8. The method according to clause 7, wherein the one or more syntax elements include at least one of the following: a third syntax element indicating that the CC-ALF mode for the Cb color component is enabled for a picture, a fourth syntax element indicating the adaptive parameter set (APS) id of the ALF APS referred to by the Cb color component of a stripe in a picture containing a video unit, a fifth syntax element indicating the number of cross-component Cb filtering, a sixth syntax element indicating that the CC-ALF mode for the Cr color component is enabled for a picture, a seventh syntax element indicating the APS id of the ALF APS referred to by the Cr color component of a stripe in a picture, or an eighth syntax element indicating the number of cross-component Cr filtering.

[1692] 9. The method according to clause 7, wherein the rule stipulates that the bitstream includes a second syntax element based on the ALF mode enabled for a video unit.

[1693] 10. The method according to any one of clauses 1-9, wherein ALF is a Wiener filter that takes adjacent samples as input.

[1694] 11. The method according to any one of clauses 1 to 3, wherein the rule stipulates that the bitstream includes syntax elements in a picture header or a picture parameter set (PPS) related to the CC-ALF mode where the chroma format sampling structure is not monochrome and / or a ninth syntax element indicating that the CC-ALF mode is enabled at a higher level in the video than the level of the video unit.

[1695] 12. The method according to any one of clauses 1 to 3, wherein the rule stipulates that when the value of the chroma array type is not equal to zero or the color format of the video is not 4:0:0, and the bitstream includes a first syntax element indicating that the CC-ALF mode is enabled for a video unit, the bitstream includes syntax elements in a picture header or a picture parameter set (PPS) related to the CC-ALF mode, wherein the first syntax element is indicated for a higher level in the video than the level of the video unit.

[1696] 13. The method according to any one of clauses 1 to 3, wherein the rule stipulates that when the value of the chroma array type is not equal to zero or the color format of the video is not 4:0:0, or the bitstream contains a first syntax element indicating that the CC-ALF mode is enabled for a video unit, the bitstream includes syntax elements in a picture header or a picture parameter set (PPS) or a slice header related to the CC-ALF mode, wherein the first syntax element is indicated for a higher level in the video than the level of the video unit.

[1697] 14. The method according to any one of clauses 11 to 12, wherein the video level includes a sequence parameter set (SPS).

[1698] 15. A video processing method, comprising: performing a conversion between a video unit of a chrominance component of a video and a bitstream of the video; wherein the bitstream conforms to format rules, and the format rules specify that the bitstream contains syntax elements, and the syntax elements indicate whether cross-component filtering of the chrominance component is enabled for all stripes associated with a picture header only when the value of the chrominance array type is not equal to zero or the color format of the video is not 4:0:0.

[1699] 16. The method according to clause 15, wherein the chrominance component includes a Cb chrominance component.

[1700] 17. The method according to clause 15, wherein the chrominance component includes a Cr chrominance component.

[1701] 18. The method according to any one of clauses 1 to 17, wherein the video unit includes a coding / decoding unit (CU), a prediction unit (PU), or a transform unit (TU).

[1702] 19. The method according to any one of clauses 1 to 18, wherein performing the conversion includes encoding the video into a bitstream.

[1703] 20. The method according to any one of clauses 1 to 18, wherein performing the conversion includes encoding the video into a bitstream, and the method further includes storing the bitstream in a non-transitory computer-readable recording medium.

[1704] 21. The method according to any one of clauses 1 to 18, wherein performing the conversion includes decoding the video from the bitstream.

[1705] 22. A method for storing a video bitstream, comprising: generating a video bitstream from a video unit of a video according to rules, and storing the bitstream in a non-transitory computer-readable recording medium; wherein the rules specify that whether to enable a cross-component adaptive loop filter (CC-ALF) mode and an adaptive loop filter (ALF) mode is indicated in the bitstream in an independent manner to encode and decode the video unit.

[1706] 23. A video decoding device, comprising a processor configured to implement the method according to one or more of clauses 1 to 22.

[1707] 24. A video encoding device, comprising a processor configured to implement the method according to one or more of clauses 1 to 22.

[1708] 25. A computer program product having computer instructions stored thereon, which when run by a processor cause the processor to implement the method according to any one of clauses 1 to 22.

[1709] 26. A non - transitory computer - readable storage medium storing a bitstream generated by the method according to any one of clauses 1 to 22.

[1710] 27. A non - transitory computer - readable storage medium storing instructions that cause a processor to implement the method according to any one of clauses 1 to 22.

[1711] The third set of clauses shows example embodiments of the techniques discussed in the previous sections (e.g., item 44).

[1712] 1. A video processing method, comprising: performing a conversion between video units of a video and a bitstream of the video according to a rule, wherein the rule specifies whether the bitstream includes at least one of control flags for a chroma - based differential pulse - code modulation (BDPCM) mode, a palette mode, or an adaptive color transform (ACT) mode based on a value of a chroma array type of the video.

[1713] 2. The method according to clause 1, wherein the value of the chroma array type describes the sampling of the chroma component.

[1714] 3. The method according to clause 1, wherein a first syntax element indicating the chroma array type is included in a sequence parameter set of the bitstream.

[1715] 4. The method according to clause 2, wherein when the chroma component is not down - sampled, the value of the chroma array type is set to 3.

[1716] 5. The method according to clause 1, wherein at least one of the control flags for the chroma BDPCM mode, the palette mode, or the ACT mode is included in the sequence parameter set of the bitstream.

[1717] 6. The method according to clause 1, wherein the rule specifies that the bitstream includes the control flag for the chroma BDPCM mode only when i) the control flag for the chroma BDPCM mode is true and ii) the chroma array type is equal to 3.

[1718] 7. The method according to clause 1, wherein the rule specifies that the bitstream includes the control flag for the palette mode only when the chroma array type is equal to 3.

[1719] 8. The method according to clause 1, wherein the rule specifies that the bitstream includes the control flag for the ACT mode only when the chroma array type is equal to 3.

[1720] 9. The method according to clause 1, wherein the rule specifies that when the chroma array type is not equal to 3, the bitstream omits the control flag for the chroma BDPCM mode.

[1721] 10. The method according to clause 1, wherein the rule provides that when the chrominance array type is not equal to 3, the control flag of the palette mode is omitted from the bitstream.

[1722] 11. The method according to clause 1, wherein the rule provides that when the chrominance array type is not equal to 3, the control flag of the ACT mode is excluded from the bitstream.

[1723] 12. The method according to clause 1, wherein the rule further specifies that when the chrominance array type is not equal to 3, the control flag of the chrominance BDPCM mode in the compliant bitstream is set to be equal to 0.

[1724] 13. The method according to clause 1, wherein the rule further specifies that when the chrominance array type is not equal to 3, the control flag of the palette mode in the compliant bitstream is set to be equal to 0.

[1725] 14. The method according to clause 1, wherein the rule further specifies that when the chrominance array type is not equal to 3, the control flag of the ACT mode is set to be equal to 0.

[1726] 15. The method according to any one of clauses 1 to 14, wherein the conversion includes encoding video into a bitstream.

[1727] 16. The method according to any one of clauses 1 to 14, wherein the conversion includes decoding video from the bitstream.

[1728] 17. A method for storing a video bitstream, including the method according to any one of clauses 1 to 16, and further including storing the bitstream into a non-transitory computer-readable recording medium.

[1729] 18. A video processing device, including a processor configured to implement the method according to any one or more of clauses 1 to 16.

[1730] 19. A computer-readable medium storing program code, which when run, causes a processor to implement the method according to any one or more of clauses 1 to 16.

[1731] 20. A computer-readable medium storing an encoded / decoded representation or a bitstream generated according to any of the above methods.

[1732] 21. A video processing device for storing a bitstream representation, wherein the video processing device is configured to implement the method according to any one or more of clauses 1 to 20.

[1733] In some embodiments, a technical solution is implemented that includes a method, a device, and a bitstream generated according to the above method for video processing.

[1734] The disclosed and other techniques, examples, embodiments, modules, and functional operations described in this document can be implemented in digital electronic circuits, or in computer software, firmware, or hardware including the structures disclosed herein and their structural equivalents, or in combinations of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for running by, or controlling the operation of, a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter implementing a machine-readable propagated signal, or a combination of one or more of them. The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus can include code that creates an execution environment for the computer programs being discussed, e.g., code that constitutes 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 a manually generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, which is generated to encode information for transmission to a suitable receiver apparatus.

[1735] 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 a compiled or interpreted language, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language file), in a single file dedicated to the program being discussed, or in multiple collaborating files (e.g., files that store one or more modules, subroutines, or portions of code). A computer program can be deployed to run on one computer or on multiple computers located at one site or distributed across multiple sites and interconnected by a communication network.

[1736] The processes and logical flows described in this document can be performed by one or more programmable processors running one or more computer programs to perform functions by operating on input data and generating output. The processes and logical flows can also be performed by dedicated logic circuitry, and the apparatus can also be implemented as dedicated logic circuitry, such as an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit).

[1737] For example, a processor suitable for executing a computer program includes general and special purpose microprocessors, as well as any one or more processors of any kind 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 for executing instructions and one or more memory devices for storing the instructions and data. Generally, a computer will also include one or more mass storage devices for storing data, such as, magnetic disks, magneto-optical disks, or optical disks, or be 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, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, special purpose logic circuitry.

[1738] Although this patent document contains many details, it should not be construed as limiting any subject or the scope of any claims, but rather as a description of features that are specific to particular embodiments of a particular technology. Certain features described in the context of separate embodiments in this patent document may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented separately or in any suitable sub-combination in multiple embodiments. Additionally, although features may be described above as acting in certain combinations and even initially claimed as such, in some cases, one or more features from a claimed combination may be removed from the combination, and the claimed combination may be directed to a sub-combination or a variant of a sub-combination.

[1739] Similarly, although operations are depicted in the drawings in a particular order, this should not be understood to mean that such operations must be performed in the particular order shown or in sequential order to obtain a desired result, or that all illustrated operations must be performed. Additionally, the separation of various system components in the embodiments of this patent document should not be understood to require such separation in all embodiments.

[1740] Only some implementations and examples have been described, and other implementations, enhancements, and variations may be made based on what is described and illustrated in this patent document.

Claims

1. A method for processing video data, comprising: Performing a conversion between a video unit of a video and a bitstream of the video according to a rule, wherein the rule stipulates that when the color format type of the video is not 4:4:4, a control flag of a color transformation mode is equal to 0; wherein the color format type describes sampling of a chrominance component, and when the chrominance component is not downsampled, the color format type is 4:4:4; and wherein in the color transformation mode, for an encoding operation, visual signaling is converted from a first color domain to a second color domain, or for a decoding operation, the visual signaling is converted from the second color domain to the first color domain; wherein the rule stipulates that whether to enable a cross-component adaptive loop filter (CC-ALF) mode for the video unit and whether to enable an adaptive loop filter (ALF) mode for the video unit are controlled by different syntax elements in a sequence parameter set (SPS) of the bitstream, and a first syntax element indicates whether to enable the CC-ALF mode, a second syntax element indicates whether to enable the ALF mode, and whether the first syntax element exists in the SPS depends on a value of the second syntax element and the color format type of the video.

2. The method according to claim 1, wherein a fourth syntax element indicating the color format type is included in the sequence parameter set of the bitstream.

3. The method according to claim 1, wherein the control flag of the color transformation mode is included in the sequence parameter set of the bitstream.

4. The method according to claim 1, wherein the rule stipulates that the bitstream includes the control flag of the color transformation mode only when the color format type is 4:4:

4.

5. The method according to claim 1, wherein the conversion includes encoding the video into the bitstream.

6. The method according to claim 1, wherein the conversion includes decoding the video from the bitstream.

7. An apparatus for processing video data, 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: Perform a conversion between a video unit of a video and a bitstream of the video according to a rule, wherein the rule stipulates that when the color format type of the video is not 4:4:4, a control flag of a color transformation mode is equal to 0; wherein the color format type describes sampling of a chrominance component, and when the chrominance component is not downsampled, the color format type is 4:4:4; and wherein in the color transformation mode, for an encoding operation, visual signaling is converted from a first color domain to a second color domain, or for a decoding operation, the visual signaling is converted from the second color domain to the first color domain; wherein the rule stipulates that whether to enable a cross-component adaptive loop filter (CC-ALF) mode for the video unit and whether to enable an adaptive loop filter (ALF) mode for the video unit are controlled by different syntax elements in a sequence parameter set (SPS) of the bitstream, and The first syntax element indicates whether the CC-ALF mode is enabled, the second syntax element indicates whether the ALF mode is enabled, and the presence of the first syntax element in the SPS depends on the value of the second syntax element and the color format type of the video.

8. The apparatus according to claim 7, wherein a fourth syntax element indicating the color format type is included in the sequence parameter set of the bitstream.

9. The apparatus according to claim 7, wherein the control flag of the color transformation mode is included in the sequence parameter set of the bitstream; and wherein the rule stipulates that the bitstream includes the control flag of the color transformation mode only when the color format type is 4:4:

4.

10. A non-transitory computer-readable storage medium storing instructions that cause a processor to: Perform conversion between video units of a video and the bitstream of the video according to a rule, wherein the rule stipulates that when the color format type of the video is not 4:4:4, the control flag of the color transformation mode is equal to 0; wherein the color format type describes the sampling of the chrominance component, and when the chrominance component is not downsampled, the color format type is 4:4:4; and wherein in the color transformation mode, for an encoding operation, visual signaling is converted from a first color domain to a second color domain, or for a decoding operation, the visual signaling is converted from the second color domain to the first color domain; wherein the rule stipulates that whether to enable the cross-component adaptive loop filter CC-ALF mode and whether to enable the adaptive loop filter ALF mode for the video unit are controlled by different syntax elements in the sequence parameter set SPS of the bitstream, and the first syntax element indicates whether the CC-ALF mode is enabled, the second syntax element indicates whether the ALF mode is enabled, and the presence of the first syntax element in the SPS depends on the value of the second syntax element and the color format type of the video.

11. The non-transitory computer-readable storage medium according to claim 10, wherein a fourth syntax element indicating the color format type is included in the sequence parameter set of the bitstream.

12. The non-transitory computer-readable storage medium according to claim 10, wherein the control flag of the color transformation mode is included in the sequence parameter set of the bitstream; and wherein the rule stipulates that the bitstream includes the control flag of the color transformation mode only when the color format type is 4:4:

4.

13. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method executed by a video processing apparatus, wherein the method includes: Generating a bitstream of video units of a video according to a rule, wherein the rule stipulates that when the color format type of the video is not 4:4:4, the control flag of the color transformation mode is equal to 0; wherein the color format type describes the sampling of chrominance components, and when the chrominance components are not downsampled, the color format type is 4:4:4; and wherein in the color transformation mode, for an encoding operation, the visual signaling is converted from a first color domain to a second color domain, or for a decoding operation, the visual signaling is converted from the second color domain to the first color domain; wherein the rule specifies that whether to enable the cross-component adaptive loop filter (CC-ALF) mode for the video unit and whether to enable the adaptive loop filter (ALF) mode for the video unit are controlled by different syntax elements in the sequence parameter set (SPS) of the bitstream, and a first syntax element indicates whether to enable the CC-ALF mode, a second syntax element indicates whether to enable the ALF mode, and whether the first syntax element exists in the SPS depends on the value of the second syntax element and the color format type of the video.

14. The non-transitory computer-readable recording medium according to claim 13, wherein a fourth syntax element indicating the color format type is included in the sequence parameter set of the bitstream.

15. The non-transitory computer-readable recording medium according to claim 13, wherein a control flag of the color transformation mode is included in the sequence parameter set of the bitstream; and wherein the rule specifies that the bitstream includes the control flag of the color transformation mode only when the color format type is 4:4:

4.

16. A method for storing a bitstream of a video, comprising: generating a bitstream of a video unit of the video according to a rule; and storing the bitstream in a non-transitory computer-readable recording medium, wherein the rule specifies that when the color format type of the video is not 4:4:4, a control flag of the color transformation mode is equal to 0; wherein the color format type describes the sampling of chrominance components, and when the chrominance components are not downsampled, the color format type is 4:4:4; and wherein in the color transformation mode, for an encoding operation, the visual signaling is converted from a first color domain to a second color domain, or for a decoding operation, the visual signaling is converted from the second color domain to the first color domain; wherein the rule specifies that whether to enable the cross-component adaptive loop filter (CC-ALF) mode for the video unit and whether to enable the adaptive loop filter (ALF) mode for the video unit are controlled by different syntax elements in the sequence parameter set (SPS) of the bitstream, and a first syntax element indicates whether to enable the CC-ALF mode, a second syntax element indicates whether to enable the ALF mode, and whether the first syntax element exists in the SPS depends on the value of the second syntax element and the color format type of the video.

Citation Information

Patent Citations

  • Systems and methods for RGB video coding enhancement

    CN106233726A

  • Method and apparatus for palette index coding in video and image compression

    CN107534783A

Cited By

  • Signaling of quantization parameters in video coding

    US12666024B2