Quantization groups used in video coding and decoding

By applying de-blocking filters and chroma QP tables in video encoding and decoding technology, the problem of difficult to balance compression ratio and complexity in the prior art is solved, and more efficient video processing and decoding performance is achieved.

CN114788279BActive Publication Date: 2025-06-27DOUYIN CO LTD

Patent Information

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

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies are difficult to find a balance between compression ratio and complexity, and there are problems with inefficiency in motion vector management.

Method used

A video processing method is adopted to optimize the video encoding and deblocking process by applying a deblocking filter during the conversion process between video blocks, and to determine the deblocking filter intensity of each component according to different methods, and to use a deblocking filter on the boundary of the video unit, combining the chromaticity QP table and deblocking control mechanism.

Benefits of technology

It improves the compression ratio and performance of video encoding and decoding, reduces the complexity and difficulty of parallelization implementation, and enhances the efficiency of video processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114788279B_ABST
    Figure CN114788279B_ABST
Patent Text Reader

Abstract

An example method for video processing includes applying a deblocking filter to video blocks of multiple components in a conversion between a video including multiple components and a bitstream representation of the video. A deblocking filter strength of the deblocking filter for each component among the multiple components is determined according to a rule that specifies using different ways to determine the deblocking filter strength of the video blocks of each component among the multiple components.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - reference to related applications

[0002] This application is based on International Patent Application No. PCT / US2020 / 063746 filed on December 8, 2020, which claims the priority and benefits of International Patent Application No. PCT / CN2019 / 123951 filed on December 9, 2019 and International Patent Application No. PCT / CN2019 / 130851 filed on December 31, 2019. All of the above - mentioned patent applications are hereby incorporated by reference in their entirety. Technical field

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

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

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

[0006] In a representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes, during the conversion between a video including multiple components and a bit - stream representation of the video, applying a de - blocking filter to video blocks of the multiple components. The de - blocking filter strength of the de - blocking filter for each component among the multiple components is determined according to a rule that prescribes using different ways to determine the de - blocking filter strength of video blocks of each component among the multiple components.

[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 first video unit of a video and a bit - stream representation of the video. During the conversion, de - blocking filtering processing is applied to the first video unit. The de - blocking control offset of the first video unit is determined based on accumulating one or more de - blocking control offset values at other video unit levels.

[0008] In another representative aspect, the disclosed techniques can be used to provide a method for video processing. The method includes, for the conversion between a block of a video and the bitstream representation of the video, determining a quantization parameter used in deblocking processing based on the use of a transform skip (TS) mode or an adaptive color transform (ACT) mode for encoding and decoding the block. The method further includes performing the conversion based on the determination.

[0009] In another representative aspect, the disclosed techniques can be used to provide a method for video processing. The method includes performing a conversion between a color component block of a video and the bitstream representation of the video. The bitstream representation complies with a rule that specifies that the size of a quantization group of the chrominance component is greater than a threshold K. The quantization group includes one or more coding units carrying quantization parameters.

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

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

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

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

[0014] 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 bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and wherein the chrominance QP offset used in the deblocking filter is the same whether a JCCR codec method is applied at the boundary of the video unit or a method different from the JCCR codec method is applied at the boundary of the video unit.

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

[0016] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes, for a conversion between a video unit of a video component and a codec representation of the video, determining a quantization group size of the video unit based on a constraint rule specifying that the quantization group size must be greater than K, where K is a positive number, and performing the conversion based on the determination.

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

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

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

[0020] In addition, a computer program product stored on a non-transitory computer-readable medium is also disclosed, which includes program code for performing any one or more of the disclosed methods.

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

[0022] Figure 1 An example of the overall processing flow of the deblocking filter processing is shown.

[0023] Figure 2 An example of the flowchart of Bs calculation is shown.

[0024] Figure 3 An example of the reference information for Bs calculation at the CTU boundary is shown.

[0025] Figure 4 An example of pixels related to filter on / off decision and strong / weak filter selection is shown.

[0026] Figure 5 An example of the overall processing flow of the deblocking filter processing in VVC is shown.

[0027] Figure 6 An example of the luma deblocking filter processing in VVC is shown.

[0028] Figure 7 An example of the chroma deblocking filter processing in VVC is shown

[0029] Figure 8 An example of the determination of the filter length at the sub-PU boundary is shown.

[0030] Figure 9A An example of the center position of the chroma block is shown.

[0031] Figure 9B Another example of the center position of the chroma block is shown.

[0032] Figure 10 Examples of blocks on the P side and the Q side are shown.

[0033] Figure 11 An example of the use of the decoded information of the luma block is shown.

[0034] Figure 12 It is a block diagram of an example of a hardware platform for implementing the visual media decoding or visual media encoding technology described in this document.

[0035] Figure 13 A flowchart of an example method of video coding and decoding is shown.

[0036] Figure 14A Shows an example placement of the CC-ALF relative to other loop filters (b) the diamond filter.

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

[0038] Figure 15 Shows an example flowchart of the Adaptive Color Transformation (ACT) process.

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

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

[0041] Figure 18 Is a block diagram illustrating an example video codec system.

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

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

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

[0045] Figure 22 Is a flowchart representation of a method for video processing according to the present technology.

[0046] Figure 23 Is a flowchart representation of another method for video processing according to the present technology.

[0047] Figure 24 Is a flowchart representation of another method for video processing according to the present technology.

[0048] Figure 25 Is a flowchart representation of yet another method for video processing according to the present technology. Detailed implementation

[0049] 1 Video coding and decoding in HEVC / H.265

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

[0051] 2.1 Deblocking Scheme in HEVC

[0052] The deblocking filter 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). The filtering is applied to determine the 8×8 block boundaries to be filtered, for both the luminance and chrominance components. The 4×4 block boundaries are not processed to reduce complexity.

[0053] Figure 1 Illustrates the overall processing flow of the deblocking filter process. Figure 1 Illustrates the overall processing flow of the deblocking filter 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 .

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

[0055] 2.1.1 Boundary Strength Calculation

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

[0057] Define P and Q as the blocks participating in filtering, where P represents the block located on the left side (vertical edge case) or above (horizontal edge case) of the boundary, and Q represents the block located on the right side (vertical edge case) or below (horizontal edge case) of the boundary. Figure 2 Illustrates how to calculate the Bs value based on the intra 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.

[0058] Calculate Bs on a 4×4 block basis, but remap Bs to an 8×8 grid. Select the maximum value of the two values of Bs corresponding to 8 pixels composed of a line in the 4×4 grid as the Bs of the boundary in the 8×8 grid.

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

[0060] 2.1.2 β and t C Decision

[0061] Derive the thresholds β and t related to filter on / off decision, strong / weak filter selection, and weak filtering process respectively according to the luminance quantization parameters QPP and QPQ of the P block and the Q block. C .

[0062] Q is used to derive β and t C , and its calculation is as follows.

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

[0064] As shown in Table 1, derive the variable β based on Q. If Bs is greater than 1, specify the variable t C as Table 1, where Clip3(0, 55, Q + 2) is used as the input. Otherwise (BS is equal to or less than 1), specify the variable t C as Table 1, where Q is used as the input.

[0065] Table 1 Derive the threshold variables β and t from the input Q C

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

[0067] 2.1.3 Filter on / off decision for 4 rows

[0068] The filter on / off decision is made in units of 4 rows. Figure 4Pixels related to the filter on / off decision are described. The 6 pixels in the two red boxes in the first 4 rows are used to determine the filter on / off for the 4 rows. The 6 pixels in the two red boxes in the last 4 rows are used to determine the filter on / off for the last 4 rows.

[0069] If dp0 + dq0 + dp3 + dq3 < β, the filtering for the first 4 rows is turned on and the strong / weak filter selection process is applied. The derivation of each variable is as follows.

[0070] 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 |, dp7 = |p 2,7 –2*p 1,7 +p 0,7 |

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

[0072] If the condition is not satisfied, no filtering is performed on the first 4 rows. Additionally, if the condition is met, dE, dEp1, and dEp2 are derived for the weak filtering process. The variable dE is set to 1. If dp0 + dp3 < (β + (β >> 1)) >> 3, the variable dEp1 is set to 1. If dq0 + dq3 < (β + (β >> 1)) >> 3, the variable dEq1 is set to 1.

[0073] For the last 4 rows, the decision is made in the same manner as above.

[0074] 2.1.4 Strong / Weak Filter Selection for 4 Rows

[0075] After the first 4 rows are determined to have the filter turned on in the filter on / off decision, if the following two conditions are met, the strong filter is used to filter the first 4 rows. Otherwise, the weak filter is used for filtering. The pixels involved are the same as those used for the filter on / off decision, asFigure 4 as shown

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

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

[0078] Similarly, if the following two conditions are satisfied, the strong filter is used to filter the last 4 rows. Otherwise, the weak filter is used for filtering.

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

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

[0081] 2.1.4.1 Strong Filtering

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

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

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

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

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

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

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

[0089] 2.1.4.2 Weak Filtering

[0090] Define Δ as follows.

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

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

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

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

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

[0096] If dEp1 equals 1,

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

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

[0099] If dEq1 equals 1,

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

[0101] q1’ = Clip1 Y (q1 + Δq)

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

[0103] 2.1.4.3 Chrominance Filtering

[0104] The Bs of chrominance filtering is inherited from luminance. If Bs > 1 or if there are coded chrominance coefficients, chrominance filtering is performed. There are no other filtering decisions. And only one filter is applied to chrominance. The chrominance filter selection process is not used. The derivation of the filtered sample values p0’ and q0’ is as follows.

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

[0106] p0’ = Clip1 C (p0 + Δ)

[0107] q0’ = Clip1 C (q0 - Δ)

[0108] Deblocking Scheme in 2.2 VVC

[0109] In VTM6, the deblocking filter process is mostly the same as that in HEVC. However, the following modifications are added.

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

[0111] B) Deblocking t C Expansion of the table and adaptation to 10-bit video.

[0112] C) 4×4 grid deblocking of luminance.

[0113] D) Stronger luminance deblocking filter.

[0114] E) Stronger chrominance deblocking filter.

[0115] F) Deblocking filter at sub-block boundaries.

[0116] G) Deblocking decision is adapted to smaller motion differences.

[0117] Figure 5 The flowchart of the deblocking filter process for the coding / decoding unit in VVC is depicted.

[0118] 2.2.1 Boundary Strength Calculation

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

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

[0121] Among them, the sample values p i,k and q i,k can be derived, where i = 0...3 and k = 0 and 3. Then, LL is used to determine the offset qpOffset according to the threshold sent in the SPS. After that, the qP L is used to derive β and t C .

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

[0123] where QpQ and QpP respectively represent the quantization parameters of the coding / decoding units containing the samples q 0,0 and p 0,0 . In the current VVC, this method is only applied to the luma deblocking process.

[0124] 2.2.2 4×4 Deblocking Grid for Luma

[0125] HEVC uses an 8×8 deblocking grid for luma and chroma. In VTM6, luma boundary deblocking processing on a 4×4 grid is introduced to handle the blocking artifacts from rectangular transform shapes. Parallel-friendly luma deblocking on a 4×4 grid is achieved by limiting the number of samples to be deblocked to 1 sample on each side of the vertical luma boundary or 1 sample on each side of the horizontal luma boundary, where the width of one side of the vertical luma boundary is 4 or less, and the height of one side of the horizontal luma boundary is 4 or less.

[0126] 2.2.3 Luma Boundary Strength Derivation

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

[0128] Table 2 Luma Boundary Strength Derivation

[0129]

[0130]

[0131]

[0132] 2.2.4 4×4 Deblocking Grid for Luma

[0133] When the samples on either side of the boundary belong to a larger block, this proposal uses a bilinear filter. The samples belonging to the larger block are defined as the width of the vertical edge >= 32 and the height of the horizontal edge >= 32.

[0134] The bilinear filter is listed below.

[0135] The block boundary samples pi for i from 0 to Sp-1 and qi for j from 0 to Sq-1 (where pi and qi follow the definitions in the above-mentioned HEVC deblocking) are then replaced by linear interpolation as follows:

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

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

[0138] where the tcPD i and tcPD j terms are the location-dependent clippings described in Section 2.2.5. The following gives g j , f i , Middle s,t , P s and Q s :

[0139]

[0140]

[0141] 2.2.5 Deblocking Control for Luminance

[0142] This subsection describes the deblocking decision process.

[0143] A wider and stronger luminance filter is used only if Conditions 1, 2, and 3 are all true.

[0144] Condition 1 is the "larger block condition". This condition detects whether the samples on the P side and Q side belong to a larger block, represented by the variables bSidePisLargeBlk and bSideQisLargeBlk respectively. bSidePisLargeBlk and bSideQisLargeBlk are defined as follows.

[0145] bSidePisLargeBlk = ((the edge type is vertical and p0 belongs to CU, where the width >= 32) || (the edge type is horizontal and p0 belongs to CU, where the height >= 32))? true : false

[0146] bSideQisLargeBlk = ((the edge type is vertical and q0 belongs to CU, where the width >= 32) || (the edge type is horizontal and q0 belongs to CU, where the height >= 32))? true : false

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

[0148] Condition 1 = (bSidePisLargeBlk || bSidePisLargeBlk)? true : false

[0149] Next, if Condition 1 is true, then Condition 2 is further checked. First, the following variables are derived: dp0, dp3, dq0, and dq3 are first derived in HEVC.

[0150]

[0151] Then Condition 2 is defined as follows.

[0152] Condition 2 = (d < β)? true : false

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

[0154] If Conditions 1 and 2 are valid, then it is checked whether any block uses sub - blocks:

[0155]

[0156]

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

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

[0159]

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

[0161] Figure 6 The flowchart of the luma deblocking filter process is depicted.

[0162] 2.2.6 Strong Chroma Deblocking Filter

[0163] The following strong deblocking filter for chroma is defined:

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

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

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

[0167] The proposed chroma filter performs deblocking on a 4×4 chroma sample grid.

[0168] 2.2.7 Chroma Deblocking Control

[0169] The above chroma filter performs deblocking on an 8×8 chroma sample grid. The chroma strong filter is used for 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), the chroma filter is selected, and a decision that satisfies the following three conditions is made. The first is the boundary strength and the decision of the larger block. The second and third are basically the same as the HEVC luma decisions, namely the on / off decision and the strong filter decision respectively.

[0170] Figure 7 The flowchart of the chroma deblocking filter process is depicted.

[0171] 2.2.8 Position - Dependent Clipping

[0172] The proposal also introduces a position - dependent clipping tcPD, which is applied to the output samples of the luma filtering process and involves modifying 7, 5, and 3 samples for the strong filter and the long filter at the boundary. Assuming the quantization error distribution, the proposal increases the clipping value for samples expected to have higher quantization noise, so that the deviation between the expected reconstructed sample value and the true sample value is expected to be larger.

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

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

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

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

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

[0178] For the P or Q boundary filtered using a short symmetric filter, a lower magnitude position - dependent threshold is applied:

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

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

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

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

[0183] 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 specified in VVC.

[0184] 2.2.9 Sub - block Deblocking Adjustment

[0185] To enable parallel - friendly deblocking by using both long filters and sub - block deblocking, the long filter is restricted to modifying at most 5 samples on the side where sub - block deblocking (AFFINE or ATMVP) is used, as shown in the luminance control of the long filter.

[0186] In addition, the sub - block deblocking is adjusted so 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.

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

[0188]

[0189] Among them, an edge equal to 0 corresponds to the CU boundary, an edge equal to 2 or an orthogonal Length-2 corresponds to 8 samples of the sub-block boundary from the CU boundary, and so on. If the implicit partitioning of the TU is used, the implicit TU is true. Figure 8 A flowchart showing the determination process of the TU boundary and the sub-PU boundary is shown.

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

[0191] 2.2.10 Deblocking decision adapted to smaller motion differences

[0192] When the difference in at least one motion vector component between the blocks on each side of the boundary is equal to or greater than the threshold of 1 sample, HEVC can deblock the prediction unit boundary. In VTM6, a threshold of half-luminance samples is introduced so that blocky artifacts at the boundaries between inter-prediction units with very small motion vector differences can also be removed.

[0193] 2.3 Combined inter and intra prediction (CIIP)

[0194] 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 the CU height are less than 128 luminance samples, an additional flag is signaled to indicate whether the combined inter / intra prediction (CIIP) mode is applied to the current CU. As the name implies, CIIP prediction combines inter-prediction signaling with intra-prediction signaling. The inter-prediction signaling P in CIIP mode is derived using the same inter-prediction process applied to the regular merge mode inter ; the intra-prediction signaling P is derived according to the regular intra-prediction process in planar mode intra . Then, weighted averaging is used to combine the intra and inter-prediction signaling, where the weight values are calculated as follows according to the encoding / decoding modes of the top and left neighboring blocks:

[0195] - If the top neighboring value is available and is intra-encoded / decoded, set isIntraTop to 1, otherwise set isIntraTop to 0;

[0196] - If the left adjacent value is available and is intra coded, set isIntraLeft to 1, otherwise set isIntraLeft to 0;

[0197] - If (isIntraLeft + isIntraLeft) equals 2, set wt to 3;

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

[0199] - Otherwise, set wt to 1.

[0200] The CIIP prediction is formed as follows:

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

[0202] 2.4 Chroma QP Table Design in VTM - 6.0

[0203] In some embodiments, a chroma QP table is used. In some embodiments, a signaling mechanism is used for the chroma QP table, which enables the opportunity to flexibly provide a table for optimizing SDR and HDR content to the encoder. It supports signaling tables for the Cb and Cr components separately. The proposed mechanism signals the chroma QP table as a piece - wise linear function.

[0204] 2.5 Transform Skip (TS)

[0205] Similar to HEVC, the transform skip mode can be used to encode and decode the residual of a block. To avoid redundancy in syntax encoding, when the MTS_CU_flag at the CU level is not equal to 0, the transform skip flag is not sent. The block size limit for transform skip is the same as MTS in JEM4, which means that transform skip is applicable to CUs where 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.

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

[0207] 2.6 Joint coding of chroma residuals (JCCR)

[0208] In some embodiments, the chrominance residuals are jointly encoded and decoded. The use (activation) of the joint chrominance encoding / decoding mode is indicated by the TU-level flag tu_joint_cbcr_residual_flag, and the selected mode is implicitly indicated by the chrominance CBFs. If one or both of the chrominance CBFs of a TU are equal to 1, the flag tu_joint_cbcr_residual_flag is present. In the PPS and slice headers, chrominance QP offset values are signaled for the joint chrominance residual encoding / decoding mode, to be different from the normal chrominance QP offset values signaled for the regular chrominance residual encoding / decoding mode. These chrominance QP offset values are used to derive the chrominance QP values for those blocks encoded and decoded using the joint chrominance residual encoding / decoding mode. When the corresponding joint chrominance encoding / decoding mode (mode 2 in Table 3) is active in a TU, this chrominance QP offset is added to the chrominance QP derived from the applied luma during quantization and decoding of that TU. For the other modes (mode 1 and 3 in Table 3, Table 3: Reconstruction of chrominance residuals. The value CSign is the sign value (+1 or –1) specified in the slice header, and resJointC[][] is the transmitted residual), the chrominance QP is derived in the same way as for traditional Cb or Cr blocks. The reconstruction process for the chrominance residuals (resCb and resCr) from the transmitted transform blocks is shown in Table 3. When this mode is active, a single joint chrominance residual block (resJointC[x][y] in Table 3) is signaled, and the residual blocks for Cb (resCb) and Cr (resCr) are derived taking into account information such as tu_cbf_cb, tu_cbf_cr, and CSign, where CSign is the sign value specified in the slice header.

[0209] At the encoder side, the derivation of the joint chrominance components is as described below. Depending on the mode (listed in the table above), resJointC is generated by the encoder as follows:

[0210] · If the mode is equal to 2 (with a single residual for reconstructed Cb = C, Cr = CSign *

[0211] C), the joint residual is determined according to the following formula

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

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

[0214] 2), the joint residual is determined according to the following formula

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

[0216] · Otherwise (mode equals 3, i.e., single residual, reconstructed Cr = C, Cb = (CSign * C) /

[0217] 2), the joint residual is determined according to the following formula

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

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

[0220]

[0221] The above three modes use different QPs. For mode 2, the QP offset signaled in the PPS by the JCCR codec block is applied, while for the other two modes, the above is not applied, but the QP offset signaled in the PPS by the non-JCCR codec block is applied.

[0222] The corresponding provisions are as follows:

[0223] 8.7.1 Derivation process of quantization parameter

[0224] Variable Qp Y is derived as follows:

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

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

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

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

[0229] – When treeType is equal to DUAL_TREE_CHROMA, the variable Qp Y is set to be equal to the luma quantization parameter Qp of the luma codec unit covering the luma position (xCb + cbWidth / 2, yCb + cbHeight / 2). Y .

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

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

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

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

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

[0235] – For the Cb and Cr components, Qp′ Cb and Qp′ Cr as well as the joint Cb - Cr codec Qp′ CbCr the chroma quantization parameter derivation is as follows:

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

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

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

[0239] 8.7.3 Scaling Process of Transform Coefficients

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

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

[0242] – Variable nTbW, specifying the transform block width,

[0243] – Variable nTbH, specifying the transform block height,

[0244] – Variable cIdx, specifying the color component of the current block,

[0245] – Variable bitDepth, specifying the bit - depth of the current color component.

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

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

[0248] – If cIdx equals 0 and transform_skip_flag[xTbY][yTbY] equals 0, then the following applies:

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

[0250] – Otherwise, if cIdx equals 0 (and transform_skip_flag[xTbY][yTbY] equals 1), then the following applies:

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

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

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

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

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

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

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

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

[0259] Figure 14A Illustrates the placement of CC-ALF relative to other loop filters. CC-ALF operates by applying a linear diamond filter ( Figure 14B ) to the luminance channel of each chrominance component, denoted as

[0260] where,

[0261] (x,y) is the refinement position of the chrominance component

[0262] (x C ,y C ) is the luminance component based on (x,y)

[0263] S i is the filter for chrominance component i supported in luminance

[0264] c i (x0,y0) represents the filter coefficients

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

[0266] - Calculate the luminance position based on the spatial scaling factor between the luminance and chrominance planes, and the support region is centered around this luminance position.

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

[0268] - The APS may be referenced in the slice header.

[0269] - The CC-ALF coefficients for each chrominance component of the strip are also stored in a buffer corresponding to the temporal sublayer. A strip-level flag is used to facilitate the reuse of these sets of temporal sublayer filter coefficients.

[0270] - The application of the CC-ALF filter 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 strip level for each chrominance component.

[0271] - The boundary filling of the horizontal virtual boundary utilizes repetition. For the remaining boundaries, the same type of filling as in the regular ALF is used.

[0272] 2.8 Derivation Process of Quantization Parameter

[0273] Derive QP based on the neighboring QP and the decoded delta QP. Example text related to the QP derivation is shown below.

[0274] The inputs to this process are:

[0275] – The luminance position (xCb, yCb), which specifies the top-left luminance sample of the current coded block relative to the top-left luminance sample of the current picture.

[0276] – The variable cbWidth, which specifies the width of the current coded block in luminance samples.

[0277] – The variable cbHeight, which specifies the height of the current coded block in luminance samples.

[0278] – The variable treeType, which specifies whether to use a single tree (SINGLE_TREE) or a dual tree to split the coded tree nodes, and, when using a dual tree, whether the current process is for the luminance (DUAL_TREE_LUMA) or chrominance (DUAL_TREE_CHROMA) component.

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

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

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

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

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

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

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

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

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

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

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

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

[0291] – availableA is equal to FALSE.

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

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

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

[0295] – Otherwise, set qPY_A to be equal to the luma quantization parameter QpY of the coding unit that contains the luma coding block covering (xQg - 1, yQg).

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

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

[0298] – availableB is equal to FALSE.

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

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

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

[0302] – Otherwise, set qPY_B to be equal to the luma quantization parameter QpY of the coding unit that contains the luma coding block covering (xQg, yQg - 1).

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

[0304] – If all of the following conditions are true, then set qPY_PRED to be equal to the luma quantization parameter QpY of the coding unit that contains the luma coding block covering (xQg, yQg - 1):

[0305] – availableB is equal to TRUE.

[0306] – The current quantization group is the first quantization group in the intra CTB row.

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

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

[0309] The variable QpY is derived as follows:

[0310] QpY = ((qPY_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffset) % (64 + QpBdOffset)) - QpBdOffset (1116)

[0311] The luma quantization parameter Qp'Y is derived as follows:

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

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

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

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

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

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

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

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

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

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

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

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

[0324] 2.9 Adaptive Color Transformation (ACT)

[0325] Figure 15 The decoding flowchart with ACT applied is shown. As Figure 15 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.

[0326] 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. Therefore, in the proposed implementation, an ACT flag is signaled to a CU to select the color space for encoding / decoding 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 component selects the same intra prediction mode as the luminance component, e.g., the DM mode.

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

[0328]

[0329] In addition, to compensate for the dynamic range change of the residual signal before and after color transformation, a QP adjustment of (-5, -5, -3) is applied to the transformed residual.

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

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

[0332] Intra sub - partition prediction (ISP): ISP sub - partitioning is only applied to luminance, while the chrominance signals are encoded and decoded without being partitioned. In the current ISP design, except for the last ISP sub - partition, other sub - partitions contain only the luminance component.

[0333] 2. 10 - bit Advanced Deblocking Control Example

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

[0335] 3. Disadvantages of Existing Implementations

[0336] DMVR and BIO do not involve the original signaling when refining the motion vectors, which may lead to inaccurate motion information of the coded block. In addition, DMVR and BIO sometimes adopt fractional motion vectors after motion refinement, while screen video usually has integer motion vectors, making the current motion information more inaccurate and thus degrading the coding performance.

[0337] 1. The interaction between the chrominance QP table and chrominance deblocking may be problematic. For example, the chrominance QP table should be applied to a single QP rather than the weighted sum of QPs.

[0338] 2. The luminance deblocking filter processing logic is complex, and the hardware design is complex.

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

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

[0341] 5. In chrominance edge determination, Qp Qand Qp P is set to be equal to the Qp of the coding / decoding unit Y values, and these coding / decoding units include coding blocks that respectively contain sample points q 0,0 and p 0,0 However, during the quantization / inverse quantization process, the Qp of the chrominance sample points is derived from the QP of the luminance block of the corresponding luminance sample points covering the center position of the current chrominance CU. When the dual-tree is enabled, different positions of the luminance block may result in different QPs. Therefore, in the chrominance deblocking process, an incorrect QP may be used for the filter decision. This misalignment may lead to visual artifacts. Figure 9A - Figure 9B An example is shown in Figure 9A which shows the corresponding CTB segmentation of the luminance block, Figure 9B and which shows the chrominance CTB segmentation under the dual-tree. When determining the QP of the chrominance block, denoted as CU c 1, first derive the center position of CU c 1. Then identify the luminance sample points corresponding to the center position of CU c 1, and the luminance QP associated with the luminance CU covering the corresponding luminance sample points, that is, then use CU Y 3 to derive the QP of CU c 1. However, when making the filter decision for the three depicted sample points (with solid circles), the QP of the CU covering the corresponding 3 sample points is selected. Therefore, for the first, second, and third chrominance sample points (as Figure 9B shown), the QPs of CU Y 2, CU Y 3, and CU Y 4 are used respectively. That is, chrominance sample points in the same CU may use different QPs for the filter decision, which may lead to incorrect decisions.

[0342] 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 filter decision process, only those offsets for non-JCCR coding / decoding blocks are used. Ignoring the coding / decoding mode may lead to incorrect filter decisions.

[0343] 7. TS and non-TS coding / decoding blocks use different QPs during the inverse quantization process, which can also be considered in the deblocking process.

[0344] 8. JCCR coding / decoding blocks in different modes use different QPs during the scaling process (quantization / inverse quantization). Such a design is not consistent.

[0345] 9. The chroma deblocking of Cb / Cr may not be designed in parallel.

[0346] 10. Derive the chroma QP in deblocking based on the QP (e.g., qP) used in the chroma inverse quantization process. However, when using TS and ACT blocks in the deblocking process, qP should be clipped or decreased by 5.

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

[0348] 4. Examples of Techniques and Embodiments

[0349] The following detailed embodiments should be regarded as examples for explaining general concepts. These embodiments should not be interpreted narrowly. In addition, these embodiments can be combined in any way.

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

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

[0352] Regarding the chroma QP in deblocking

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

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

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

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

[0357] 2. QP clipping may not be applicable to the input of the chroma QP table.

[0358] 3. It is recommended that the deblocking of the chrominance component can be based on the chrominance QP mapped on each side (through the chrominance QP table).

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

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

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

[0362] 4. It is recommended that the deblocking of the chrominance component can be based on the QP of quantization / inverse quantization applied to the chrominance block.

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

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

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

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

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

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

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

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

[0371] 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 delta QP (e.g., CuQpDeltaVal) is equal to 0.

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

[0373] d. In one example, the above example can be applied to the luminance and / or chrominance blocks.

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

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

[0376] 5. It is recommended to consider the picture / slice / tile / sub-picture level quantization parameter offsets for different coding methods during the deblocking filter decision process.

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

[0378] b. In one example, the filtering process (e.g., chrominance edge decision process) that requires the use of quantization parameters for chrominance blocks can depend on whether these blocks use JCCR.

[0379] i. Alternatively, in addition, the picture / slice level QP offset (e.g., pps_joint_cbcr_qp_offset) applied to the JCCR coded blocks can be further considered in the deblocking filtering process.

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

[0381] 1. In one example, when any one of the blocks on the P or Q side uses JCCR.

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

[0383] iii. Additionally, alternatively, the filtering process may depend on the mode of JCCR (e.g., whether the mode is equal to 2).

[0384] 6. A chrominance filtering process (e.g., chrominance edge decision process) that requires access to the decoded information of a luminance block may utilize the information associated with the same luminance coding / decoding block used to derive the chrominance QP during the inverse quantization / quantization process.

[0385] a. In one example, a chrominance filtering process (e.g., chrominance edge decision process) that requires the use of quantization parameters for a luminance block may utilize the luminance coding / decoding unit of the corresponding luminance samples covering the center position of the current chrominance CU.

[0386] b. In Figure 9A - Figure 9B an example depicted, where the decoded information of CU Y 3 can be used for Figure 9B the filtering decisions of three chrominance samples (first, second, and third) in

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

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

[0389] b. Alternatively, additionally, the QP for the chrominance block scaling process may already consider the chrominance CU level QP offset.

[0390] 8. Whether to call the above bullets may depend on the samples to be filtered, which are in the blocks on the P or Q side.

[0391] a. For example, whether to use the information of the luminance coding / decoding block of the corresponding luminance samples covering the current chrominance sample or the information of the luminance coding / decoding block of the corresponding luminance samples covering the center position of the chrominance coding / decoding block of the current chrominance sample may depend on the block position.

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

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

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

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

[0396] i. In one example, the chroma QP for deblocking on the P side can depend on whether the transform block on the P side is coded / decoded with JCCR applied.

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

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

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

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

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

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

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

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

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

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

[0407] a. In one example, when TuCResMode[xTb][yTb] is equal to 2, the chroma QP used in P-side deblocking is set to the JCCR chroma 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 .

[0408] b. In one example, when TuCResMode[xTb][yTb] is equal to 2, the chroma QP used in P-side deblocking is set to the Cb chroma 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 .

[0409] c. In one example, when TuCResMode[xTb][yTb] is equal to 2, the chroma QP used in P-side deblocking is set to the Cr chroma 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 .

[0410] d. In one example, when TuCResMode[xTb][yTb] is equal to 2, the chroma QP used for deblocking on the Q side is set to the JCCR chroma 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 .

[0411] e. In one example, when TuCResMode[xTb][yTb] is equal to 2, the chroma QP used in Q-side deblocking is set to the Cb chroma 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 .

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

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

[0414] 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 lice_beta_offset_div2, slice_tc_offset_div2.

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

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

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

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

[0419] Regarding QP setting

[0420] 15. It is recommended to signal an indication (e.g., slice_cu_chroma_qp_offset_enabled_flag) to enable block-level chroma QP offset at the slice / tile / sub-picture level.

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

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

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

[0424] iii. Alternatively, such an indication can be derived instead.

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

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

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

[0428] 16. For JCCR encoding / decoding blocks of different modes, the same QP derivation method is used in the scaling process (quantization / inverse quantization).

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

[0430] Filtering procedure

[0431] 17. Deblocking of all color components except the first color component can be performed after the deblocking process of the first color component.

[0432] a. In one example, when the color format is 4:4:4, the deblocking process of the second and third components can be after the deblocking process of the first component.

[0433] b. In one example, when the color format in the RGB color space is 4:4:4, the deblocking process of the second and third components can be after the deblocking process of the first component.

[0434] c. In one example, when the color format is 4:2:2, the vertical deblocking process of the second and third components can be after the vertical deblocking process of the first component.

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

[0436] 18. How to calculate the gradient used in the deblocking filtering process may depend on the coding / decoding mode information and / or quantization parameters.

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

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

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

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

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

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

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

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

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

[0446] d. the coding / decoding mode of the block containing the edge samples

[0447] e. the transform matrix applied to the block containing the edge samples

[0448] f. the block size / block shape of the current block and / or its neighboring blocks

[0449] g. the color format indication (such as 4:2:0, 4:4:4, RGB, or YUV)

[0450] h. the coding / decoding tree structure (such as a dual tree or a single tree)

[0451] i. Strip / group type and / or picture type

[0452] j. Color component (e.g., can be applied only to Cb or Cr)

[0453] k. Temporal layer ID

[0454] l. Profiles / Levels / Tiers standard

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

[0456] Regarding boundary strength derivation

[0457] 19. It is recommended to treat JCCR-encoded / decoded blocks as non-JCCR-encoded / decoded blocks during the boundary strength decision process.

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

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

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

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

[0462] b. In one example, the deblocking filter can be disabled even if the two blocks have different numbers of MVs (e.g., one is single-predicted and the other is bi-predicted).

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

[0464] i. Alternatively, furthermore, 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.

[0465] d. In one example, the difference between the motion vectors of 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

[0466] ii. Alternatively, the difference between the motion vectors of two blocks being greater than a 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

[0467] iii. Alternatively, in one example, the difference between the motion vectors of two blocks greater than a 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

[0468] iv. Alternatively, in one example, the difference between the motion vectors of two blocks greater than a 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

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

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

[0471] g. In the above examples, Th can depend on

[0472] v. video content (e.g., screen content or natural content)

[0473] vi. 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

[0474] vii. the position of CU / PU / TU / block / video coding unit

[0475] viii. the coding mode of a block containing edge samples

[0476] ix. the transform matrix applied to a block containing edge samples

[0477] x. Block size / block shape of the current block and / or its neighboring blocks

[0478] xi. Color format indication (such as 4:2:0, 4:4:4, RGB or YUV)

[0479] xii. Coding tree structure (such as dual-tree or single-tree)

[0480] xiii. Slice / group-of-pictures type and / or picture type

[0481] xiv. Color component (for example, it can be applied only to Cb or Cr)

[0482] xv. Temporal layer ID

[0483] xvi. Profiles / Levels / Tiers standard

[0484] xvii. Alternatively, Th can be signaled to the decoder.

[0485] h. The above examples can be applied under certain conditions.

[0486] xviii. In one example, the condition is that blkP and blkQ are not coded using the intra mode.

[0487] xix. In one example, the condition is that the coefficients of blkP and blkQ in the luminance component are zero.

[0488] xx. In one example, the condition is that blkP and blkQ are not coded using the CIIP mode.

[0489] xxi. In one example, the condition is that blkP and blkQ are coded using the same prediction mode (such as IBC or Inter).

[0490] Regarding luminance deblocking filtering process

[0491] 21. Deblocking may use different QPs for TS-coded blocks and non-TS-coded blocks.

[0492] a. In one example, the QP of TS can be used for TS-coded blocks, and the QP of non-TS can be used for non-TS-coded blocks.

[0493] 22. The luminance filtering process (such as the luminance edge decision process) can depend on the quantization parameter applied to the luminance block scaling process.

[0494] a. In one example, the QP used to derive beta and Tc can depend on the cropping range of transform skip, such as shown by QpPrimeTsMin.

[0495] 23. It is recommended to use the same gradient calculation for both larger block boundaries and smaller block boundaries.

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

[0497] i. In one example, the threshold β in the decision can be modified for larger block boundaries.

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

[0499] 2. In one example, the β for the deblocking filter on / off decision for larger block boundaries may be smaller than that for smaller block boundaries.

[0500] a. Alternatively, in one example, the β for the deblocking filter on / off decision for larger block boundaries may be greater than that for smaller block boundaries.

[0501] b. Alternatively, in one example, the β for the deblocking filter on / off decision for larger block boundaries can be equal to that for smaller block boundaries.

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

[0503] a. Video content (such as screen content or natural content)

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

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

[0506] d. The coding mode of the block containing edge samples

[0507] e. The transform matrix applied to the block containing edge samples

[0508] f. The block size / block shape of the current block and / or its neighboring blocks

[0509] g. Color format indication (such as 4:2:0, 4:4:4, RGB or YUV)

[0510] h. Coding tree structure (such as a binary tree or a single tree)

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

[0512] j. Color component (for example, it can be applied only to Cb or Cr)

[0513] k. Temporal layer ID

[0514] l. Profiles / Levels / Tiers standard

[0515] m. Alternatively, beta can be signaled to the decoder

[0516] Regarding the scaling matrix (inverse quantization matrix)

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

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

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

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

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

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

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

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

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

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

[0527] 27. CCALF can be applied before some loop filtering processes in the decoder

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

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

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

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

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

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

[0534] e. Alternatively, the order indication of different filters (e.g., CCALF, ALF, SAO, deblocking filter) can be signaled or derived during runtime.

[0535] i. Alternatively, the indication of invoking CCALF can be signaled or derived during runtime.

[0536] f. For different color components (e.g., Cb and Cr), how to control the explicit (e.g., signaled from encoder to decoder) or implicit (e.g., derived at encoder and decoder) indication of CCALF can be decoupled.

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

[0538] Regarding the chroma QP offset list

[0539] 28. The signaling and / or selection of the chrominance QP offset list can depend on the coding / decoding prediction mode / picture type / strip or slice or tile type.

[0540] h. The chrominance QP offset list, such as cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] may be different for different coding / decoding modes.

[0541] i. In one example, whether and how to apply the chrominance QP offset list can depend on whether the current block is coded / decoded in intra mode.

[0542] j. In one example, whether and how to apply the chrominance QP offset list can depend on whether the current block is coded / decoded in inter mode.

[0543] k. In one example, whether and how to apply the chrominance QP offset list can depend on whether the current block is coded / decoded in palette mode.

[0544] l. In one example, whether and how to apply the chrominance QP offset list may depend on whether the current block is coded in IBC mode.

[0545] m. In one example, whether and how to apply the chrominance QP offset list may depend on whether the current block is coded in transform skip mode.

[0546] n. In one example, whether and how to apply the chrominance QP offset list may depend on whether the current block is coded in BDPCM mode.

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

[0548] Regarding the chroma deblocking of CTU boundaries

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

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

[0551] 31. For the edges of the CTU boundary, deblocking may be based on the luma QP of the corresponding block.

[0552] p. In one example, for the horizontal edge at the CTU boundary, deblocking may be based on the luma QP of the corresponding block.

[0553] i. In one example, deblocking may be based on the luma QP of the corresponding block on the P side.

[0554] ii. In one example, deblocking may be based on the luma QP of the corresponding block on the Q side.

[0555] q. In one example, for the vertical edge at the CTU boundary, deblocking may be based on the luma QP of the corresponding block.

[0556] i. In one example, deblocking may be based on the luma QP of the corresponding block on the P side.

[0557] ii. In one example, deblocking may be based on the luma QP of the corresponding block on the Q side.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0573] v. In one example, the function can be based on the maximum value of the chrominance QP for each CTU. w. In one example, deblocking can be performed based on a minimum function of the chrominance QP on the P side.

[0574] i. In one example, the function can be based on the minimum value of the chroma QP for every 8 luma samples.

[0575] ii. In one example, the function can be based on the minimum value of the chroma QP for every 16 luma samples.

[0576] iii. In one example, the function can be based on the minimum value of the chroma QP for every 32 luma samples.

[0577] iv. In one example, the function can be based on the minimum value of the chroma QP for every 64 luma samples.

[0578] v. In one example, the function can be based on the minimum value of the chroma QP for each CTU. x. In one example, deblocking can be based on a chroma QP subsampling function on the P side.

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

[0580] 1. In one example, the k-th sample can be the first sample.

[0581] 2. In one example, the k-th sample can be the last sample.

[0582] 3. In one example, the k-th sample can be the 3rd sample.

[0583] 4. In one example, the k-th sample can be the 4th sample.

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

[0585] 1. In one example, the k-th sample can be the first sample.

[0586] 2. In one example, the k-th sample can be the last sample.

[0587] 3. In one example, the k-th sample can be the 7th sample.

[0588] 4. In one example, the k-th sample can be the 8th sample.

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

[0590] 1. In one example, the k-th sample can be the first sample.

[0591] 2. In one example, the k-th sample point can be the last sample point.

[0592] 3. In one example, the k-th sample point can be the 15th sample point.

[0593] 4. In one example, the k-th sample point can be the 16th sample point.

[0594] iv. In one example, the function can be based on the chroma QP of the k-th chroma sample point for every 64 luminance sample points.

[0595] 1. In one example, the k-th sample point can be the first sample point.

[0596] 2. In one example, the k-th sample point can be the last sample point.

[0597] 3. In one example, the k-th sample point can be the 31st sample point.

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

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

[0600] y. Alternatively, the above bullet points can be applied to the chroma QP on the Q side for deblocking.

[0601] 33. The quantization group for the chroma component that can be constrained must be greater than a certain size. A quantization group is a set (one or more) of codec units that carry quantization parameters.

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

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

[0604] 34. The quantization group for the luminance component that can be constrained must be greater than a certain size.

[0605] a. In one example, the width of the quantization group for the luminance component that can be constrained must be greater than a certain value, K.

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

[0607] 35. It can be constrained that for a chroma row segment of length 4*m starting from (4*m*x, 2*y) relative to the upper left corner (4*m*x, 2*y) of the picture, the QP of the chroma component can be the same, where x and y are non-negative integers; m is a positive integer.

[0608] z. In one example, m can be equal to 1.

[0609] aa. In one example, the width of the quantization group of the chrominance components must be no less than 4*m.

[0610] 36. It can be constrained that for a chrominance column segment of length 4*n starting from (2*x, 4*n*y) relative to the upper left corner of the picture, the QP of the chrominance components can be the same, where x and y are non-negative integers; n is a positive integer.

[0611] ab. In one example, n can be equal to 1.

[0612] ac. In one example, the height of the quantization group of the chrominance components must be no less than 4*n.

[0613] Regarding the chroma deblocking filtering process

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

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

[0616] b. In one example, X is Bi-Direction Optical Flow (BDOF).

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

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

[0619] e. In one example, the use of codec tool X can be signaled under the condition of checking the slice type (such as a P or B slice; not an I slice).

[0620] Regarding the chroma deblocking filtering process

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

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

[0623] c. In one example, if it is determined that the deblocking filter is to be applied, the decision on whether to perform a stronger deblocking filter for the Cb and Cr components may be the same.

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

[0625] i. In one example, the average gradient of the Cb and Cr components can be used for the above decision for the Cb and Cr components.

[0626] ii. In one example, stronger chrominance filtering may be performed only when the strong filtering condition is satisfied for both the Cb and Cr components.

[0627] 1. Alternatively, in one example, weaker chrominance filtering may be performed only when the strong filtering condition is not satisfied for at least one chrominance component.

[0628] In ACT

[0629] 39. Whether the deblocking QP is equal to the inverse quantization QP may depend on whether ACT is applied.

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

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

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

[0633] 40. ACT and BDPCM can be specifically used at the block level.

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

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

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

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

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

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

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

[0641] c. In one example, when intra_bdpcm_luma_flag is true and sps_bdpcm_chroma_enabled_flag is false, it can be inferred that cu_act_enabled_flag is false.

[0642] d.d. In one example, when cu_act_enabled_flag is true and sps_bdpcm_chroma_enabled_flag is false, it can be inferred that intra_bdpcm_luma_flag is false.

[0643] Generally 42. The above proposed method can be applied under certain conditions.

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

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

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

[0647] c. In one example, the usage of the above method can depend on

[0648] ii. Video content (e.g., screen content or natural content)

[0649] iii. Messages signaled in the video coding unit, such as 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

[0650] iv. Positions of CU / PU / TU / block / video coding unit

[0651] a. In one example, in order to filter samples along the CTU / CTB boundary (e.g., the first K (e.g., K = 4 / 8) to the upper / left / right / lower boundary), existing designs can be applied. For other samples, the proposed method (e.g., bullet points 3 / 4) can be applied instead.

[0652] v. Coding mode of the block containing edge samples

[0653] vi. Transformation matrix applied to the block containing edge samples

[0654] vii. Block size of the current block and / or its neighboring blocks

[0655] viii. Block shape of the current block and / or its neighboring blocks

[0656] ix. Color format indication (such as 4:2:0, 4:4:4, RGB or YUV)

[0657] x. Coding tree structure (such as dual tree or single tree)

[0658] xi. Strip / slice group type and / or picture type

[0659] xii. Color component (e.g., can be applied only to Cb or Cr)

[0660] xiii. Temporal layer ID

[0661] xiv. Profiles / Levels / Tiers standards

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

[0663] 5 Additional embodiments

[0664] The newly added text is shown in bold italic with underline. The deleted text is marked with [[ ]].

[0665] 5.1 Embodiment #1 of chrominance QP in deblocking

[0666] 8.8.3.6 Unidirectional edge filtering process

[0667] …

[0668] – Otherwise (if cIdx is not equal to 0), the filtering process for the edges in the chroma coding block of the current coding unit specified by cIdx includes the following ordered steps:

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

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

[0671] 8.8.3.6.3 Decision Process for Chroma Block Edges

[0672] …

[0673] Set the variables Qp Q and Qp P to be equal to the Qp of the coding unit, and these coding units include the coding blocks that respectively contain the samples q Y and p 0,0 respectively. 0,0

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

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

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

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

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

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

[0680] Based on the quantization parameter Q derived as follows, the value of the variable β' is determined as specified in Table 8-18:

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

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

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

[0684] β = β' * (1 << (BitDepth C - 8)) (8-1135)

[0685] Based on the quantization parameter Q derived as follows, the value of the variable t C ' is determined as specified in Table 8-18:

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

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

[0688] The derivation of the variable t C is as follows:

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

[0690] Example #2 of boundary strength derivation

[0691] 8.8.3.5 Boundary filtering strength derivation process

[0692] The inputs to this process are:

[0693] – Array of picture samples recPicture,

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

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

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

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

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

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

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

[0701] …

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

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

[0704] – Otherwise, the following applies:

[0705] …

[0706] – Variable bS[xDi [yD j The derivation of [yD is as follows:

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

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

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

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

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

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

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

[0714] –

[0715] – The encoding / decoding sub-block containing sample p0 and the encoding / decoding sub-block containing sample q0 are both encoded / decoded using the IBC prediction mode, and the absolute difference between the horizontal or vertical components of the block vectors used in the predictions of the two encoding / decoding sub-blocks is greater than or equal to 8 in 1 / 16 luminance sample units.

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

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

[0718] Note 2 – The number of motion vectors used to predict the encoding / decoding sub-block with the top-left sample covering (xSb, ySb) is equal to PredFlagL0[xSb][ySb] + PredFlagL1[xSb][ySb].

[0719] – One motion vector is used to predict the encoding / decoding sub-block containing sample p0, and one motion vector is used to predict the encoding / 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 1 / 16 luminance sample units.

[0720] – Two motion vectors and two different reference pictures are used to predict the encoding / decoding sub-block containing sample p0, and two motion vectors of the same two reference pictures are used to predict the encoding / decoding sub-block containing sample q0, and the absolute difference between the horizontal or vertical components of the two motion vectors used to predict the two encoding / decoding sub-blocks of the same reference picture is greater than or equal to 8 in 1 / 16 luminance sample units.

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

[0722] – The absolute difference between the horizontal or vertical components of the list 0 motion vectors used in the predictions of the two encoding / decoding sub-blocks is greater than or equal to 8 in 1 / 16 luminance samples, or the absolute difference between the horizontal or vertical components of the list 1 motion vectors used in the predictions of the two encoding / decoding sub-blocks is greater than or equal to 8 in 1 / 16 luminance sample units.

[0723] – 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 horizontal or vertical component of 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 1 / 16 luminance sample units, and 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 horizontal or vertical component of 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 1 / 16 luminance sample units.

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

[0725] 5.3 Example #3 of boundary strength derivation

[0726] 8.8.3.5 Boundary filtering strength derivation process

[0727] The inputs to this process are:

[0728] – The picture sample array recPicture,

[0729] – 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,

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

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

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

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

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

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

[0736] …

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

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

[0739] – Otherwise, the following applies:

[0740] …

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

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

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

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

[0745] – Otherwise, if the block edge is also a transform block edge, and sample point 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 equal to 1.

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

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

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

[0749] – Both the encoding / decoding sub-block containing sample p0 and the encoding / decoding sub-block containing sample q0 are encoded / decoded using the IBC prediction mode, and the absolute difference between the horizontal or vertical components of the block vectors used in the predictions of the two encoding / decoding sub-blocks is greater than or equal to 8 in 1 / 16 luminance sample units.

[0750] – For the prediction of the encoding / decoding sub-block containing sample p0, different reference pictures or different numbers of motion vectors are used compared to the prediction of the encoding / decoding sub-block containing sample q0.

[0751] Note 1 – The determination of whether the reference pictures used for the two encoding / decoding sub-blocks are the same or different is based only on which pictures are referenced, without considering whether the index of reference picture list 0 or the index of reference picture list 1 is used to form the prediction, nor considering whether the index positions in the reference picture list are different.

[0752] Note 2 – The number of motion vectors used to predict the encoding / decoding sub-block with the top-left sample covering (xSb, ySb) is equal to PredFlagL0[xSb][ySb] + PredFlagL1[xSb][ySb].

[0753] – One motion vector is used to predict the encoding / decoding sub-block containing sample p0, and one motion vector is used to predict the encoding / 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 1 / 16 luminance sample units.

[0754] – Two motion vectors and two different reference pictures are used to predict the encoding / decoding sub-block containing sample p0, and two motion vectors of the same two reference pictures are used to predict the encoding / decoding sub-block containing sample q0, and the absolute difference between the horizontal or vertical components of the two motion vectors used to predict the two encoding / decoding sub-blocks of the same reference picture is greater than or equal to 8 in 1 / 16 luminance sample units.

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

[0756] – The absolute difference between the horizontal or vertical components of the list 0 motion vectors used in the predictions of the two encoding / decoding sub-blocks is greater than or equal to 8 in 1 / 16 luminance samples, or the absolute difference between the horizontal or vertical components of the list 1 motion vectors used in the predictions of the two encoding / decoding sub-blocks is greater than or equal to 8 in 1 / 16 luminance sample units.

[0757] – 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 horizontal or vertical component of 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 1 / 16 luma sample units, and 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 horizontal or vertical component of 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 1 / 16 luma sample units.

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

[0759] 5.4 Example #4 of Luma Deblocking Filter Processing

[0760] 8.8.3.6.1 Decision Process for Luma Block Edges

[0761] The inputs to this process are:

[0762] – The picture sample array recPicture,

[0763] – 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,

[0764] – 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,

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

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

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

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

[0769] The outputs of this process are:

[0770] – The variables dE, dEp, and dEq, containing the decisions,

[0771] – The modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[0772] – The variable t C . ...

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

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

[0775] a. Derive the variables dp0L, dp3L, and modify maxFilterLengthP as follows:

[0776] – If sidePisLargeBlk equals 1, the following applies:

[0777] dp0L = (dp0 + Abs(p 5,0 - 2 * p 4,0 + p 3,0 )) + 1) >> 1 (8 - 1087)

[0778] dp3L = (dp3 + Abs(p 5,3 - 2 * p 4,3 + p 3,3 )) + 1) >> 1 (8 - 1088)

[0779] – Otherwise, the following applies:

[0780] dp0L = dp0 (8 - 1089)

[0781] dp3L = dp3 (8 - 1090)

[0782] [[maxFilterLengthP = 3 (8 - 1091)]]

[0783]

[0784] b. The variables dq0L and dq3L are derived as follows:

[0785] – If sideQisLargeBlk equals 1, the following applies:

[0786] dq0L = (dq0 + Abs(q 5,0 - 2 * q 4,0 + q 3,0 )) + 1) >> 1 (8 - 1092)

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

[0788] (8 - 1093)

[0789] – Otherwise, the following applies:]]

[0790] dq0L = dq0 (8-1094)

[0791] dq3L = dq3 (8-1095)

[0792]

[0793] …

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

[0795] …

[0796] 5.5 Example #5 of chroma deblocking filter processing

[0797] 8.8.3.6.3 Decision process for chroma block edges

[0798] This process is called only if ChromaArrayType is not equal to 0.

[0799] The inputs to this process are:

[0800] – The chroma picture sample array recPicture,

[0801] – 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,

[0802] – 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,

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

[0804] – The variable cIdx, specifying the color component index,

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

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

[0807] – The variable maxFilterLengthCbCr.

[0808] The outputs of this process are

[0809] – The modified variable maxFilterLengthCbCr,

[0810] – The variable tC 。

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

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

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

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

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

[0816] Where the values of p for i = 0..maxFilterLengthCbCr and k = 0..maxK i and q i are derived as follows:

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

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

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

[0820] subSampleC = SubHeightC (8 - 1128)

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

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

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

[0824] subSampleC = SubWidthC (8 - 1131)

[0825]

[0826] –

[0827] –

[0828]

[0829] –

[0830]

[0831] The quantization parameter Q is determined based on the following derivation and is specified in Table t-18 to determine the value of variable β':

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

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

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

[0835] β = β' * (1 << (BitDepth C - 8)) (8 - 1135)

[0836] The quantization parameter Q is determined based on the following derivation and is specified in Table 8-18 to determine the value of variable t C ':

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

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

[0839] The derivation of variable t C is as follows:

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

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

[0842] 5.6 Example #6 of Chrominance QP in Deblocking

[0843] 8.8.3.6.3 Decision Process for Chrominance Block Edges

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

[0845] The inputs to this process are:

[0846] – The chrominance picture sample array recPicture,

[0847] – The 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,

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

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

[0850] – The variable cIdx, specifying the color component index,

[0851] – The variable cQpPicOffset, specifying the picture-level chrominance quantization parameter offset,

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

[0853] – The variable maxFilterLengthCbCr.

[0854] The outputs of this process are:

[0855] – The modified variable maxFilterLengthCbCr,

[0856] – The variable t C .

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

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

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

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

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

[0862] Where the values of p for i = 0..maxFilterLengthCbCr and k = 0..maxK i and q i Are derived as follows:

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

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

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

[0866] subSampleC = SubHeightC (8 - 1128)

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

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

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

[0870] subSampleC = SubWidthC (8 - 1131)

[0871] The variables Qp Q and Qp P Are set equal to the Qp Y Values of the codec units that include the coding blocks containing the samples q 0,0 and p 0,0 Respectively.

[0872]

[0873] Variable Qp C is derived as follows:

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

[0875]

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

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

[0878] …

[0879] 5.7 Example #7 of Chrominance QP in Deblocking

[0880] 8.8.3.6.3 Decision Process for Chrominance Block Edges

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

[0882] The inputs to this process are:

[0883] – The chrominance picture sample array recPicture,

[0884] – The 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,

[0885] – ……

[0886] The output of this process is

[0887] – The modified variable maxFilterLengthCbCr,

[0888] – The variable t C .

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

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

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

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

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

[0894] Where the values of p for i = 0..maxFilterLengthCbCr and k = 0..maxK i and q i are derived as follows:

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

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

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

[0898] subSampleC = SubHeightC (8 - 1128)

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

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

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

[0902] subSampleC = SubWidthC (8 - 1131)

[0903] [[Variable Qp Q and Qp P are set equal to the Qp of the codec units Y that include codec blocks containing samples q 0,0 and p 0,0 respectively.]]

[0904]

[0905] The derivation of variable Qp C is as follows:

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

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

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

[0909] The quantization parameter Q, determined based on the following derivation as specified in Table 8 - 18, is used to determine the value of variable β':

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

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

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

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

[0914] The quantization parameter Q, determined as specified in Table 8 - 18, is based on the following derivation to determine the value of variable t C ':

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

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

[0917] 5.8 Example #8 of Chrominance QP in Deblocking

[0918] When making filter decisions 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 CUY3 is used respectively.

[0919] In this way, how to select the luma CU in the chrominance quantization / inverse quantization process is related to how to select the luma CU in the chrominance filter decision process.

[0920] 5.9 Example #9 of QP for JCCR Coding / Decoding Blocks

[0921] 8.7.3 Scaling Process of Transform Coefficients

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

[0923] – 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,

[0924] – Variable nTbW, specifying the transform block width,

[0925] – Variable nTbH, specifying the transform block height,

[0926] – Variable cIdx, specifying the color component of the current block,

[0927] – Variable bitDepth, specifying the bit depth of the current color component.

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

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

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

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

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

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

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

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

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

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

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

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

[0940] 5.9 Example #10 of QP for JCCR encoding / decoding blocks

[0941] 8.8.3.2 Deblocking filtering process in one direction

[0942] The input to this process is:

[0943] – The variable treeType specifies whether the current component being processed is the luma (DUAL_TREE_LUMA) or chroma (DUAL_TREE_CHROMA) component,

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

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

[0946] – The variable edgeType, which specifies whether to filter vertical (EDGE_VER) or horizontal (EDGE_HOR) edges.

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

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

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

[0950] The variables firstCompIdx and lastCompIdx are derived as follows:

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

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

[0953] For each coding unit and each coding block, for each color component of the coding unit indicated by the color component index cIdx, ranging from firstCompIdx to lastCompIdx (inclusive), the coding block width is nCbW, the coding block height is 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 edges through the following ordered steps:

[0954] …

[0955] [[5. The picture sample array recPicture is derived as follows:

[0956] – If cIdx is equal to 0, recPicture is set to be equal to the luminance picture sample array reconstructed before deblocking recPicture L previously.

[0957] – Otherwise, if cIdx is equal to 1, recPicture is set to be equal to the chrominance picture sample array reconstructed before deblocking recPicture Cb previously.

[0958] – Otherwise (cIdx is equal to 2), recPicture is set to be equal to the chrominance picture sample array recPicture reconstructed before deblocking Cr

[0959]

[0960] Call a one - direction edge filtering process for the coded - decoded block specified in Clause 8.8.3.6, where the variables edgeType, variable cIdx, the reconstructed picture recPicture before deblocking, the position (xCb, yCb), the coded - decoded block width nCbW, the coded - decoded block height nCbH, and the arrays bS, maxFilterLengthPs, and maxFilterLengthQs are used as inputs, and the modified reconstructed picture recPicture is used as the output.

[0961] 8.8.3.5 Boundary Filtering Strength Derivation Process

[0962] The inputs to this process are:

[0963] – The picture sample array recPicture,

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

[0965] – The variable nCbW, specifying the current coded - decoded block width

[0966] – The variable nCbH, specifying the current coded - decoded block height,

[0967] – The variable edgeType, specifying whether to filter vertical (EDGE_VER) or horizontal (EDGE_HOR) edges, – The variable cIdx, specifying the color component of the current coded - decoded block,

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

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

[0970] The variable xD i , yD j , xN, and yN are derived as follows:

[0971] …

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

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

[0974] – Otherwise, the following applies:

[0975] – The sample values p0 and q0 are derived as follows:

[0976] – If edgeType is equal to EDGE_VER, then set p0 to be equal to recPicture [xCb + xD i - 1][yCb + yD j and set q0 to be equal to recPicture [xCb + xD i [yCb + yD j .

[0977] – Otherwise (edgeType is equal to EDGE_HOR), set p0 to be equal to recPicture [xCb + xD i [yCb + yD j - 1] and set q0 to be equal to recPicture [xCb + xD i [yCb + yD j . ..

[0978] 8.8.3.6 Unidirectional Edge Filtering Processing

[0979] The inputs to this process are:

[0980] – The variable edgeType, which specifies whether a vertical edge (EDGE_VER) or a horizontal edge (EDGE_HOR) is being processed currently,

[0981] – The variable cIdx, which specifies the current color component,

[0982] – The reconstructed picture before deblocking recPicture,

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

[0984] – The variable nCbW, which specifies the width of the current coding block

[0985] – The variable nCbH, which specifies the height of the current coding block,

[0986] – The array bS, which specifies the boundary strength,

[0987] – The arrays maxFilterLengthPs and maxFilterLengthQs.

[0988] The output of this process is the deblocked recPicture i and the modified reconstructed picture afterwards.

[0989] …

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

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

[0992]

[0993] 3. Invoke the decision process for the chrominance block edges specified in Clause 8.8.3.6.3, with the chrominance image sample array recPicture, the position of the chrominance coding block (xCb, yCb), the position (xBl, yBl) of the chrominance block set to (xDk, yDm), the edge direction edgeType, the variable cQpPicOffset, the boundary filtering strength bS[xDk][yDm], and the variable maxFilterLengthCbCr set to be equal to maxFilterLengthPs[xDk][yDm] as inputs, and with the modified variable maxFilterLengthCbCr and the variable t C as outputs.

[0994] 4. When maxFilterLengthCbCr is greater than 0, call the filtering process for the chrominance block edges specified in Clause 8.8.3.6.4, with the chrominance image sample array recPicture, the position of the chrominance coding / decoding block (xCb, yCb), set to the chrominance position (xBl, yBl) of the block equal to (xDk, yDm), the edge direction edgeType, the variable maxFilterLengthCbCr as inputs, and the variable t C as an input, and the modified chrominance picture sample array recPicture as the output.

[0995]

[0996] 8.8.3.6.3 Decision Process for Chrominance Block Edges

[0997] This process is called only if ChromaArrayType is not equal to 0.

[0998] The inputs to this process are:

[0999] – The chrominance picture sample array recPicture,

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

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

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

[1003] – [The variable cIdx, specifying the color component index,]

[1004] – The variable cQpPicOffset, specifying the picture-level chrominance quantization parameter offset,

[1005] – The variable bS, specifying the boundary filtering strength,

[1006] – The variable maxFilterLengthCbCr.

[1007] The outputs of this process are

[1008] – The modified variable maxFilterLengthCbCr,

[1009] – The variable t C。

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

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

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

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

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

[1015] where the values p of i = 0..maxFilterLengthCbCr and k = 0..maxK i and q i are derived as follows:

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

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

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

[1019] subSampleC = SubHeightC (8 - 1128)

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

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

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

[1023] subSampleC = SubWidthC (8 - 1131)

[1024] The variable Qp Q and Qp P are set to be equal to the Qp of the coding and decoding unitY Values, and these encoding / decoding units each include an encoding / decoding block containing sample q 0,0 and p 0,0 respectively.

[1025] The derivation of variable Qp C is as follows:

[1026]

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

[1028] The quantization parameter Q, determined based on the following derivation as specified in Table 8 - 18, is used to determine the value of variable β':

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

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

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

[1032] β = β' * (1 << (BitDepth C - 8)) (8 - 1135)

[1033] The quantization parameter Q, determined based on the following derivation as specified in Table 8 - 18, is used to determine the value of variable t C ':

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

[1035] where slice_tc_offset_div2 is the value of the syntax element slice_tc_offset_div2 of the slice containing sample q 0,0 The derivation of variable t

[1036] is as follows: C t

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

[1038] 8))(8 - 1137)

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

[1040] When maxFilterLengthCbCr is equal to 3, the following ordered steps are applied:

[1041] 1. Variables n1, and are derived as follows:

[1042] n1 = (subSampleC == 2)? 1: 3(8 - 1138)

[1043]

[1044] 2. Variable d is set to (d0 + d1 + 1) >> 1

[1045] 3. Variables dSam0 and dSam1 are both set to 0.

[1046] 4. When d is less than β, the following ordered steps apply:

[1047] a. Variable dpq is set to be equal to 2 * dpq0.

[1048] b. For the sample position (xCb + xBl, yCb + yBl), variable dSam0 is obtained by calling the decision process for chrominance samples specified in Clause 8.8.3.6.8, taking the sample values p 0,0 、p 3,0 、q 0,0 and q 3,0 ,variable dpq, β and t C as inputs, and assigning the output to decision dSam0.

[1049] c. The variable dpq is set to be equal to 2 * dpq1.

[1050] d. The variable dSam1 is modified as follows:

[1051] – If edgeType is equal to EDGE_VER, for the sample position (xCb + xBl, yCb + yBl + n1), call the decision process for chroma samples specified in Clause 8.8.3.6.8, with the sample values p 0,n1 、p 3,n1 、q 0,n1 and q 3,n1 , the variables dpq, β, and t C as inputs, and assign the output to the decision dSam1.

[1052] – Otherwise (edgeType is equal to EDGE_HOR), for the sample position (xCb + xBl + n1, yCb + yBl), call the decision process for chroma samples specified in Clause 8.8.3.6.8, with the sample values p 0,n1 、p 3,n1 、q 0,n1 and q 3,n1 , the variables dpq, β, and t C as inputs, and assign the output to the decision dSam1.

[1053] 5.5. The variable maxFilterLengthCbCr is modified as follows:

[1054] – If dSam0 is equal to 1 and dSam1 is equal to 1, then maxFilterLengthCbCr is set to be equal to 3.

[1055] – Otherwise, maxFilterLengthCbCr is set to 1.

[1056] 8.8.3.6.4 Filtering Process for Chroma Block Edges

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

[1058] The inputs to this process are:

[1059] – The chroma picture sample array recPicture,

[1060] – 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,

[1061] – Chrominance position (xBl, yBl), specifying the top - left sample of the current chrominance block relative to the top - left sample of the current chrominance coding block,

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

[1063] – Variable maxFilterLengthCbCr, containing the maximum chrominance filter length,

[1064]

[1065] – Variable t C 。

[1066] The output of this process is the modified chrominance picture sample array recPicture.

[1067] …

[1068] where i = 0..maxFilterLengthCbCr and k = 0..maxK for values p i and q i are derived as follows: – If edgeType is equal to EDGE_VER, the following applies:

[1069]

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

[1071]

[1072] Depending on the value of edgeType, the following applies:

[1073] – If edgeType is equal to EDGE_VER, for each sample position (xCb + xBl, yCb + yBl + k), k = 0..maxK, the following sequential steps apply:

[1074] 1. Call the chrominance sample filtering process specified in Clause 8.8.3.6.9, with the variable maxFilterLengthCbCr, the sample values pi,k, qi,k where i = 0..maxFilterLengthCbCr, the positions (xCb + xBl - i 1, yCb + yBl + k) and (xCb + xBl + i, yCb + yBl + k) where i = 0..maxFilterLengthCbCr - 1, and the variable t C as inputs, and the filtered sample values p where i = 0..maxFilterLengthCbCr - 1i ' and q i ' as the output.

[1075] 2. For the filtered sample values p where i = 0..maxFilterLengthCbCr - 1 i ' and q i ' replace the corresponding samples in the sample array recPicture as follows:

[1076]

[1077] – Otherwise (edgeType equal to EDGE_HOR), for each sample position (xCb + xBl + k, yCb + yBl), k = 0..maxK, the following ordered steps apply:

[1078] 1. Call the chrominance sample filtering process specified in Section 8.8.3.6.9, with the variables maxFilterLengthCbCr, the sample values p where i = 0..maxFilterLengthCbCr i,k and q i,k , positions (xCb + xBl + k, yCb + yBl - i + 1) and (xCb + xBl + k, yCb + yBl + i), the variable t C as inputs, and the filtered sample values p i ' and q i ' as the output.

[1079] 2. The filtered sample values p i ' and q i ' replace the corresponding samples in the sample array recPicture as follows:

[1080]

[1081] 5.11 Example #11

[1082] 8.8.3.6.3 Decision Process for Chrominance Block Edges

[1083] …

[1084] [[Set the variables Qp Q and Qp P to be equal to the Qp Y value of the codec units that include the codec blocks containing the samples q 0,0 and p 0,0 respectively.

[1085] The derivation of the variable Qp C is as follows:

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

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

[1088]

[1089] –

[1090] –

[1091]

[1092] –

[1093]

[1094] 5.12 Example #12

[1095] 8.8.3.6.3 Decision Process for Chroma Block Edges

[1096] …

[1097] [[Set variables Qp Q and Qp P to be equal to the Qp Y value of the codec units that include the codec blocks containing samples q 0,0 and p 0,0 respectively.

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

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

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

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

[1102]

[1103] 5.13 Example #13

[1104] Decision process for chroma block edges

[1105] …

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

[1107] The inputs to this process are:

[1108] – The chroma picture sample array recPicture,

[1109] – 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,

[1110] – 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,

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

[1112] – The variable cIdx, specifying the color component index,

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

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

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

[1116] The outputs of this process are

[1117] – The modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1118] – Variable t C 。

[1119] …

[1120] Variable Qp P is derived as follows:

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

[1122] – If TuCResMode[xTb P [yTb P equals 2, then Qp P is set to be equal to Qp′

[1123] p 0,0 of the transform block containing sample CbCr 。

[1124] –

[1125] – Otherwise, if cIdx equals 1 , then Qp P is set to be equal to Qp′ 0,0 p Cb of the transform block containing sample

[1126] – Otherwise, Qp P is set to be equal to Qp′ 0,0 p Cr of the transform block containing sample

[1127] –

[1128] Variable Qp Q is derived as follows:

[1129] – The luma position (xTb Q , xTb Q ) is set to the top-left luma sample position of the transform block containing sample q 0,0 , relative to the top-left luma sample of the picture.

[1130] – If TuCResMode[xTbQ [yTb Q is equal to 2, then set Qp Q to be equal to Qp′ of the transform block containing sample point q 0,0 . CbCr .

[1131] –

[1132] – Otherwise, if cIdx is equal to 1 , then set Qp Q to be equal to Qp′ of the transform block containing sample point q 0,0 . Cb .

[1133] – Otherwise, set Qp Q to be equal to Qp′ of the transform block containing sample point q0,0 Cr .

[1134] –

[1135] – The derivation of variable Qp C is as follows:

[1136] Qp C =(Qp Q -QpBdOffset + Qp P -QpBdOffset + 1)>>1 (1321)

[1137] 5.14 Example #14

[1138] Decision process for the chroma block edge

[1139] …

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

[1141] The inputs to this process are:

[1142] – Chroma picture sample array recPicture,

[1143] – 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,

[1144] – 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,

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

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

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

[1148] – The variable maxFilterLengthP specifies the maximum filter length,

[1149] – The variable maxFilterLengthQ specifies the maximum filter length.

[1150] The output of this process is

[1151] – The modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1152] – The variable t C .

[1153] …

[1154] The variable Qp P is derived as follows:

[1155] – 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 with respect to the top-left luminance sample of the picture.

[1156] – If TuCResMode[xTb P [yTb P equals 2, then Qp P is set to be equal to Qp′ 0,0 of the transform block containing sample p CbCr .

[1157] –

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

[1159] – Otherwise, Qp P is set to be equal to Qp′ 0,0 of the transform block containing sample p Cr .

[1160] –

[1161] Variable Qp Q is derived as follows:

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

[1163] – If TuCResMode[xTb Q [yTb Q equals 2, then set Qp Q to be equal to Qp′ 0,0 of the transform block containing sample q CbCr .

[1164] –

[1165] – Otherwise, if cIdx equals 1 , then set Qp Q to be equal to Qp′ 0,0 of the transform block containing sample q Cb .

[1166] – Otherwise, set Qp Q to be equal to Qp′ Cr of the transform block containing sample q0,0

[1167] –

[1168] – Variable Qp C is derived as follows:

[1169] Qp C = (Qp Q - QpBdOffset + Qp P - QpBdOffset + 1) >> 1 (1321)

[1170] 5.15 Example #15

[1171] The example control logic is as Figure 17 shown. 7.3.2.6 Picture Header RBSP Syntax

[1172] 7.3.7.1 General Strip Header Syntax

[1173] 5.16 Example #16

[1174] 7.3.2.4 Picture Parameter Set RBSP Syntax

[1175]

[1176] 7.3.2.6 Picture Header RBSP Syntax

[1177] 7.3.7.1 Generalized Strip Header Syntax

[1178] 7.4.3.4 Picture Parameter Set RBSP Syntax

[1179]

[1180]

[1181] 7.4.8.1 Generalized Strip Header Semantics

[1182]

[1183] 8.8.3.6.3 Decision Process for Chroma Block Edges

[1184] …

[1185] The quantization parameter Q, specified in Table 41, is used to determine the value of the variable β' based on the following derivation:

[1186] [[Q = Clip3(0, 63, Qp C + (slice_beta_offset_div2 << 1)) (1322)]]

[1187] ■

[1188]

[1189] ■

[1190]

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

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

[1193] β = β' * (1 << (BitDepth - 8)) (1323)

[1194] Based on the following derivation of the chrominance quantization parameter Q, the value of variable t is determined as specified in Table 41: C 's value:

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

[1196] ■

[1197]

[1198] ■

[1199]

[1200] …

[1201] 5.18 Example #18

[1202] 7.4.3.4 Picture Parameter Set RBSP Semantics

[1203]

[1204] 7.4.8.1 General Strip Header Semantics

[1205]

[1206] …

[1207] Based on the following derivation of the quantization parameter Q, the value of variable β' is determined as specified in Table 41:

[1208] [[Q = Clip3(0, 63, qP + (slice_beta_offset_div2 << 1)) (1262)]]

[1209]

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

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

[1212] β = β' * (1 << (BitDepth - 8)) (1263)

[1213] The quantization parameter Q, determined based on the following derivation and specified in Table 41, is used to determine the value of variable t C ':

[1214] [[Q = Clip3(0, 65, qP + 2 * (bS - 1) + (slice_tc_offset_div2 << 1)) (1264)]]

[1215]

[1216] …

[1217] 8.8.3.6.3 Decision Process for Chrominance Block Edges

[1218] …

[1219] The quantization parameter Q, determined based on the following derivation and specified in Table 41, is used to determine the value of variable β':

[1220] [[Q = Clip3(0, 63, Qp C + (slice_beta_offset_div2 << 1)) (1322)]]

[1221] ■

[1222]

[1223] ■

[1224]

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

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

[1227] β = β' * (1 << (BitDepth - 8)) (1323)

[1228] The chrominance quantization parameter Q, determined based on the following derivation and specified in Table 41, is used to determine the value of variable t C ':

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

[1230] ■

[1231]

[1232] ■

[1233] …

[1234] 5.19 Example #19

[1235] This example is related to ACT.

[1236] Equal to 1 means that BDPCM is applied to the current chroma encoding / decoding block at position (x0, y0), that is, the transformation is skipped, and the intra-chroma prediction mode is specified by intra_bdpcm_chroma_dir_flag. intra_bdpcm_chroma_flag equal to 0 means that BDPCM is not applied to the current chroma encoding / decoding block at position (x0, y0).

[1237] When intra_bdpcm_chroma_flag does not exist [[it is inferred to be equal to 0]]

[1238] The variable BdpcmFlag[x][y][cIdx] is set to be equal to intra_bdpcm_chroma_flag, where x = x0..x0 + cbWidth - 1, y = y0..y0 + cbHeight 1, and cIdx = 1..2.

[1239] intra_bdpcm_chroma_dir_flag equal to 0 means that the BDPCM prediction direction is horizontal. intra_bdpcm_chroma_dir_flag equal to 1 means that the BDPCM prediction direction is vertical.

[1240]

[1241] The variable BdpcmDir[x][y][cIdx] is set to be equal to intra_bdpcm_chroma_dir_flag, where x = x0..x0 + cbWidth - 1, y = y0..y0 + cbHeight - 1, and cIdx = 1..2.

[1242] 5.20 Example #20

[1243] This example relates to QP derivation for deblocking.

[1244] 8.8.3.6.1 Decision process for luminance block edges

[1245] The inputs to this process are:

[1246] – The chroma picture sample array recPicture,

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

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

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

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

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

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

[1253] The outputs of this process are:

[1254] – The variables dE, dEp, and dEq, containing the decisions,

[1255] – The modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1256] – The variable t C . ...

[1257] [[The variables Qp Q and Qp P are set to be equal to the Qp Y values of the coding / decoding units that include the coding / decoding blocks containing the samples q 0,0 and p 0,0 respectively.]]

[1258]

[1259] 8.8.3.6.3 Decision process for chroma block edges

[1260] This process is called only if ChromaArrayType is not equal to 0.

[1261] The inputs to this process are:

[1262] – The chrominance picture sample array recPicture,

[1263] – The 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,

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

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

[1266] – The variable cIdx, specifying the color component index,

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

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

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

[1270] The outputs of this process are:

[1271] – The modified filter length variables maxFilterLengthP and maxFilterLengthQ,

[1272] – The variable t C . ...

[1273] The derivation of the variable QpP is as follows:

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

[1275] – If TuCResMode[xTb P [yTb P is equal to 2, then Qp P is set to be equal to Qp′ 0,0 of the transform block containing sample p CbCr .

[1276] – Otherwise, if cIdx is equal to 1, then Qp P is set to be equal to the one containing sample p0,0 Qp' of the transformed block Cb .

[1277] – Otherwise, Qp P is set to be equal to Qp' of the transformed block containing sample p 0,0 . Cr .

[1278]

[1279] The variable Qp Q is derived as follows:

[1280] – The luma position (xTb Q , xTb Q ) is set to the top-left luma sample position of the transformed block containing sample q 0,0 , relative to the top-left luma sample of the picture.

[1281] – If TuCResMode[xTb Q [yTb Q is equal to 2, then set Qp Q to be equal to Qp' of the transformed block containing sample q 0,0 . CbCr .

[1282] – Otherwise, if cIdx is equal to 1, then set Qp Q to be equal to Qp' of the transformed block containing sample q 0,0 . Cb .

[1283] – Otherwise, Qp Q is set to be equal to Qp' of the transformed block containing sample q0,0 Cr .

[1284]

[1285] – The variable Qp C is derived as follows:

[1286] Qp C = (Qp Q - QpBdOffset + Qp P - QpBdOffset + 1) >> 1 (1321)

[1287] Examples of the disclosed technology

[1288] Figure 12is a block diagram of an example video processing apparatus 1200. The apparatus 1200 can be used to implement one or more methods described in this document. The apparatus 1200 can be embodied in a smart phone, a tablet computer, a computer, an Internet of Things (IoT) receiver, etc. The apparatus 1200 can include one or more processors 1202, one or more memories 1204, and video processing hardware 1206. The processor 1202 can be configured to implement one or more methods described in this document. The memory 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. In some embodiments, the hardware 1206 can be partially or fully part of the processor 1202 (e.g., a graphics processing unit core GPU or other signal processing circuitry).

[1289] In the present disclosure, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm can be applied during the conversion from the pixel representation of a video to the corresponding bitstream representation, and vice versa. The bitstream representation of the current video block can correspond, for example, to bits located at different positions or distributed at different positions within the bitstream, as defined by the syntax. For example, a macroblock can be encoded based on the transform and coding / decoding error residual values, and can also use bits in the header and other fields in the bitstream.

[1290] It should be understood that the disclosed methods and techniques will benefit video encoder and / or decoder embodiments incorporated in video processing devices (such as smart phones, laptop computers, desktop computers, and similar devices) by allowing the use of the techniques disclosed in this document.

[1291] Figure 13 is a flowchart of an example method 1300 for video processing. The method 1300 includes, at 1310, performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundaries of the video unit such that when using a chrominance quantization parameter (QP) table to derive the parameters of the deblocking filter, the chrominance QP table processes each chrominance QP value.

[1292] Some embodiments can be described using the following clause-based format.

[1293] 1. A video processing method, comprising:

[1294] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundaries of the video unit such that when using a chrominance quantization parameter (QP) table to derive the parameters of the deblocking filter, the chrominance QP table processes each chrominance QP value.

[1295] 2. The method according to clause 1, wherein, after being processed by the chrominance QP table, a chrominance QP offset is added to each chrominance QP value.

[1296] 3. The method according to any one of clauses 1-2, wherein the chrominance QP offset is added to the value output from the chrominance QP table.

[1297] 4. The method according to any one of clauses 1-2, wherein the chrominance QP offset is not regarded as an input to the chrominance QP table.

[1298] 5. The method according to clause 2, wherein the chrominance QP offset is at the picture level or the video unit level.

[1299] 6. A video processing method, comprising:

[1300] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit, such that the chrominance QP offset is used in the deblocking filter, wherein the chrominance QP offset is at the picture / strip / slice / tile / sub-picture level.

[1301] 7. The method according to clause 6, wherein the chrominance QP offset used in the deblocking filter is associated with the coding / decoding method applied at the boundary of the video unit.

[1302] 8. The method according to clause 7, wherein the coding / decoding method is a chrominance residual joint coding / decoding (JCCR) method.

[1303] 9. A video processing method, comprising:

[1304] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit, such that the chrominance QP offset is used in the deblocking filter, wherein information related to the same luminance coding / decoding unit is used in the deblocking filter and is used to derive the chrominance QP offset.

[1305] 10. The method according to clause 9, wherein the same luminance coding / decoding unit covers the corresponding luminance samples at the center position of the video unit, and wherein the video unit is a chrominance coding / decoding unit.

[1306] 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 filter depend at least in part on the quantization / inverse quantization parameters of the scaling process.

[1307] 12. The method according to clause 11, wherein the quantization / inverse quantization parameters of the scaling process include the chrominance QP offset.

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

[1309] 14. The method according to clause 13, wherein the information related to the same luminance codec unit depends on the relative position of the codec unit with respect to the same luminance codec unit.

[1310] 15. A video processing method, comprising:

[1311] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and wherein an indication enabling the use of the chrominance QP offset is signaled in the bitstream representation.

[1312] 16. The method according to clause 15, wherein the indication is signaled conditionally in response to detecting one or more flags.

[1313] 17. The method according to clause 16, wherein one or more flags are related to a JCCR enable flag or a chrominance QP offset enable flag.

[1314] 18. The method according to clause 15, wherein the indication is signaled based on a derivation.

[1315] 19. A video processing method, comprising:

[1316] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and wherein the chrominance QP offset used in the deblocking filter is the same whether a JCCR codec method is applied at the boundary of the video unit or a method different from the JCCR codec method is applied at the boundary of the video unit.

[1317] 20. A video processing method, comprising:

[1318] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and wherein the boundary strength (BS) of the deblocking filter is calculated without comparing the number of reference pictures and / or the number of motion vectors (MVs) associated with the video unit at the P - side boundary of the reference picture and / or the number of motion vectors (MVs) associated with the video unit at the Q - side.

[1319] 21. The method according to clause 20, wherein the deblocking filter is disabled under one or more conditions.

[1320] 22. The method according to clause 21, wherein one or more conditions are associated with the magnitude of the motion vector (MV) or a threshold value.

[1321] 23. The method according to clause 22, wherein the threshold value is associated with at least one of the following: i. the content of the video unit, ii. a message signaled in a DPS / SPS / VPS / PPS / APS / picture header / strip header / slice group header / largest coding unit (LCU) / coding unit (CU) / LCU row / LCU group / TU / PU block / video coding unit, iii. the position of the CU / PU / TU / block / video coding unit, iv. the coding mode of a block having boundary samples, v. the transform matrix applied to a video unit having boundary samples, vi. the shape or size of the video unit, vii. an indication of the color format, viii. the coding tree structure, ix. the strip / slice group type and / or picture type, x. the color component, xi. the temporal layer ID, or xii. the profile / level / layer of the standard.

[1322] 24. The method according to clause 20, wherein the TS-coded video unit and the non-TS-coded video unit use different QP offsets.

[1323] 25. The method according to clause 20, wherein the QP used in the luminance filtering step is related to the QP used in the scaling process of the luminance block.

[1324] 26. A video decoding apparatus, comprising a processor configured to implement the method according to one or more of clauses 1 to 25.

[1325] 27. A video coding apparatus, comprising a processor configured to implement the method according to one or more of clauses 1 to 25.

[1326] 28. A computer program product having computer code stored thereon, which when executed by a processor causes the processor to implement the method according to any one of clauses 1 to 25.

[1327] 29. A method, apparatus or system described in this document.

[1328] Figure 18 is a block diagram depicting an example video coding and decoding system 100 that can utilize the techniques of the present disclosure.

[1329] As Figure 18As shown, the video coding and decoding system 100 may include a source device 110 and a destination device 120. The source device 110 generates encoded video data that may be referred to as a video encoding device. The destination device 120 may decode the encoded video data generated by the source device 110 and may be referred to as a video decoding device.

[1330] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.

[1331] 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 that form a coded representation of the video data. The bitstream may include coded pictures and associated data. A coded picture is a coded representation of a picture. The associated data may include a sequence parameter set, a picture parameter set, 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 sent directly to the destination device 120 via the I / O interface 116 over a network 130a. The encoded video data may also be stored on a storage medium / server 130b for access by the destination device 120.

[1332] The destination device 120 may include an I / O interface 126, a video decoder 124, and a display device 122.

[1333] 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, and the destination device 120 is configured to interface with an external display device.

[1334] The video encoder 114 and the video decoder 124 may operate according to a video compression standard, such as the High Efficiency Video Coding (HEVC) standard, the Versatile Video Coding (VVC) standard, and other current and / or future standards.

[1335] Figure 19 is a block diagram illustrating an example of a video encoder 200, and the video encoder 200 may be the video encoder 114 in the Figure 18 system 100 illustrated in

[1336] Video encoder 200 may be configured to perform any or all of the techniques of the present disclosure. In Figure 19 the example of, video encoder 200 includes a plurality of functional components. The techniques described in the present disclosure may be shared among the various components of video encoder 200. In some examples, a processor may be configured to perform any or all of the techniques described in the present disclosure.

[1337] The functional components of video encoder 200 may include a partitioning unit 201, a prediction unit 202 (which may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205, and an intra prediction unit 206), a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213, and an entropy coding / decoding unit 214.

[1338] In other examples, video encoder 200 may include more, fewer, or different functional components. In one example, prediction unit 202 may include an intra block copy (IBC) unit. The IBC unit may perform prediction in the IBC mode, where at least one reference picture is the picture in which the current video block is located.

[1339] In addition, some components such as motion estimation unit 204 and motion compensation unit 205 may be highly integrated, but are shown separately in the Figure 5 example for purposes of explanation.

[1340] Partitioning unit 201 may partition a picture into one or more video blocks. Video encoder 200 and video decoder 300 may support various video block sizes.

[1341] Mode selection unit 203 may select one of the coding / decoding modes (intra or inter, e.g., based on an error result), and provide the resulting intra or inter coded / decoded block to residual generation unit 207 to generate residual block data, and to reconstruction unit 212 to reconstruct the coded / decoded block for use as a reference picture. In some examples, mode selection unit 203 may select a combination of intra and inter prediction (CIIP) mode, where the prediction is based on an inter prediction signal and an intra prediction signal. In the case of inter prediction, mode selection unit 203 may also select the resolution of the motion vector (e.g., sub-pixel or integer pixel accuracy) for the block.

[1342] 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 the motion information and decoded samples of pictures from buffer 213 other than the picture associated with the current video block.

[1343] The motion estimation unit 204 and the motion compensation unit 205 may perform different operations on the current video block. For example, depending on whether the current video block is in an I slice, a P slice, or a B slice.

[1344] In some examples, the motion estimation unit 204 may perform uni - directional prediction for the current video block, and the motion estimation unit 204 may search the reference pictures in list 0 or list 1 to find the reference video block for the current video block. The motion estimation unit 204 may then generate a reference index indicating the reference picture in list 0 or list 1 that contains the reference video block and a motion vector indicating 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 for the current video block. The motion compensation unit 205 may generate a predicted video block for the current block based on the reference video block indicated by the motion information of the current video block.

[1345] In other examples, the motion estimation unit 204 may perform bi - directional prediction for the current video block. The motion estimation unit 204 may search for the reference video block of the current video block in the reference pictures in list 0, and may also search for another reference video block of the current video block in the reference pictures in list 1. The motion estimation unit 204 may then generate reference indices indicating the reference pictures in list 0 and list 1 that contain the reference video blocks and a motion vector indicating the spatial displacement between the reference video blocks and the current video block. The motion estimation unit 204 may output the reference indices and the motion vector of the current video block as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block for the current video block based on the reference video blocks indicated by the motion information of the current video block.

[1346] In some examples, the motion estimation unit 204 may output a complete set of motion information for the decoder's decoding process.

[1347] In some examples, the motion estimation unit 204 may not output a complete set of motion information for the current video. Instead, the motion estimation unit 204 may signal the motion information of the current video block by referring to the motion information of another video block. For example, the motion estimation unit 204 may determine that the motion information of the current video block is similar enough to the motion information of an adjacent video block.

[1348] In one example, the motion estimation unit 204 may indicate a value in the syntax structure associated with the current video block, which indicates to the video decoder 300 that the current video block has the same motion information as another video block.

[1349] In another example, the motion estimation unit 204 may identify another video block and a motion vector difference (MVD) in a syntax structure associated with the current video block. The motion vector difference represents 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.

[1350] 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 predication (AMVP) and merge mode signaling.

[1351] The intra prediction unit 206 may perform intra prediction on the current video block. When the intra prediction unit 206 performs intra prediction on the current video block, the intra prediction unit 206 may generate prediction data for the current video block based on decoded samples of other video blocks in the same picture. The prediction data for the current video block may include a predicted video block and various syntax elements.

[1352] The residual generation unit 207 may generate residual data for the current video block by subtracting (e.g., indicated by a negative sign) the predicted video block of the current video block from the current video block. The residual data for the current video block may include a residual video block that corresponds to different sample components of the samples in the current video block.

[1353] In other examples, there may be no residual data for the current video block, such as in the skip mode, and the residual generation unit 207 may not perform the subtraction operation.

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

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

[1356] The inverse quantization unit 210 and the inverse transform unit 211 can apply inverse quantization and inverse transform to the transformed coefficient video block respectively to reconstruct the residual video block from the transformed coefficient video block. The reconstruction unit 212 can add the reconstructed residual video block to the corresponding samples of one or more predicted video blocks generated by the prediction unit 202 to generate a reconstructed video block associated with the current block for storage in the buffer 213.

[1357] After the reconstruction unit 212 reconstructs the video block, a loop filtering operation can be performed to reduce video block artifacts in the video block.

[1358] The entropy coding / decoding unit 214 can receive data from other functional components of the video encoder 200. When the entropy coding / decoding unit 214 receives data, the entropy coding / decoding unit 214 can perform one or more entropy coding operations to generate entropy-coded data and output a bitstream including the entropy-coded data.

[1359] Figure 20 is an example block diagram illustrating a video decoder 300, and the video decoder 300 can be Figure 18 the video decoder 114 in the system 100 illustrated in

[1360] The video decoder 300 can be configured to perform any or all of the techniques of the present disclosure. In Figure 20 the example, the video decoder 300 includes a plurality of functional components. The techniques described in the present disclosure can be shared among various components of the video decoder 300. In some examples, a processor can be configured to perform any or all of the techniques described in the present disclosure.

[1361] In Figure 20 the 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. In some examples, the video decoder 300 can perform a decoding pass that is generally opposite to the encoding pass (e.g., Figure 19 ) described with respect to the video encoder 200.

[1362] The entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream can include entropy-coded video data (e.g., encoded video data blocks). The entropy decoding unit 301 can decode the entropy-coded video data, and based on the entropy-decoded video data, the motion compensation unit 302 can determine motion information including motion vectors, motion vector precision, reference picture list indices, and other motion information. For example, the motion compensation unit 302 can determine this information by performing AMVP and merge modes.

[1363] The motion compensation unit 302 may generate motion-compensated blocks and may perform interpolation based on an interpolation filter. An identifier of the interpolation filter used with sub-pixel accuracy may be included in a syntax element.

[1364] The motion compensation unit 302 may use an interpolation filter used by the video encoder 20 during encoding of a video block to compute sub-integer pixel interpolated values of a reference block. The motion compensation unit 302 may determine the interpolation filter used by the video encoder 200 according to received syntax information and may use the interpolation filter to generate a prediction block.

[1365] The motion compensation unit 302 may use some syntax information to determine the size of blocks for encoding frames and / or slices of an encoded video sequence, partitioning information that describes how each macroblock of a picture of the encoded video sequence is partitioned, a 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.

[1366] The intra prediction unit 303 may form a prediction block from spatially adjacent blocks using, for example, an intra prediction mode received in a bitstream. The inverse quantization unit 303 inverse quantizes the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 301, i.e., dequantizes. The inverse transform unit 303 applies an inverse transform.

[1367] The reconstruction unit 306 may add a residual block to a corresponding prediction block generated by the motion compensation unit 202 or the intra prediction unit 303 to form a decoded block. If needed, a deblocking filter may also be applied to filter the decoded block in order to remove blocking artifacts. Then the decoded video block is stored in a buffer 307, which provides reference blocks for subsequent motion compensation and also generates a decoded video for presentation on a display device.

[1368] Figure 21 A block diagram of an example video processing system 2100 is shown, which may implement various techniques of the present disclosure. Various implementations may include some or all components of the system 2100. The system 2100 may include an input 2102 for receiving video content. The video content may be received in a raw or uncompressed format (e.g., 8- or 10-bit multi-component pixel values), or may be received in a compressed or encoded format. The input 2102 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.

[1369] System 2100 may include an encoding / decoding component 2104, which may implement various encoding / decoding or encoding methods described in this document. The encoding / decoding component 2104 may reduce the average bit rate of the video from the input 2102 to the output of the encoding / decoding component 1304 to generate an encoded / decoded representation of the video. Therefore, encoding / decoding techniques are sometimes referred to as video compression or video transcoding techniques. The output of the encoding / decoding component 2104 may be stored or transmitted through a connected communication, as shown by component 2106. The stored or transmitted bitstream (or encoded / decoded) representation of the video received at the input 2102 may be used by component 2108 to generate pixel values or displayable video that is sent to the display interface 2110. The process of generating user-visible video from the bitstream representation is sometimes referred to as video decompression. In addition, although certain video processing operations are referred to as "encoding / decoding" operations or tools, it should also be recognized that encoding / decoding tools or operations are used for the encoder, and the corresponding decoding tools or operations that reverse the encoding / decoding results will be performed by the decoder.

[1370] 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 SATA (Serial Advanced Technology Attachment), PCI, IDE interface, etc. The techniques described in this document may be embodied in various electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.

[1371] Figure 22 is a flowchart representation of the video processing method of the present technology. Method 2200 includes, at operation 2210, applying a deblocking filter to video blocks of a plurality of components in a conversion between a video including a plurality of components and a bitstream representation of the video. The deblocking filter strength of the deblocking filter for each component in the plurality of components is determined according to a rule that specifies using different ways to determine the deblocking filter strength of video blocks of each component in the plurality of components.

[1372] In some embodiments, the plurality of components at least includes a Cb component and a Cr component. In some embodiments, each color component in the plurality of components is associated with deblocking parameter offsets beta and tc, and the deblocking parameter offsets include a first syntax element beta_offset_div2 and a second syntax element tc_offset_div2 in a video unit. In some embodiments, the video unit includes a portion corresponding to a picture parameter set. In some embodiments, the video unit further includes a portion corresponding to a picture header. In some embodiments, different syntax elements are applicable to video blocks of color components in the case where joint encoding / decoding of a chrominance residual mode is applied to video blocks.

[1373] Figure 23It is a flowchart representation of a method for video processing according to the present technology. Method 2300 includes, at operation 2310, performing a conversion between a first video unit of a video and a bitstream representation of the video. During the conversion, a deblocking filtering process is applied to the first video unit. A deblocking control offset for the first video unit is determined based on accumulating one or more deblocking control offset values at other video unit levels.

[1374] In some embodiments, the deblocking control offset includes at least beta_offset_div2 or tc_offset_div2. In some embodiments, the first video unit includes a slice, and wherein the other video unit levels include at least a picture parameter set or a picture.

[1375] Figure 24 It is a flowchart representation of a method for video processing according to the present technology. Method 2400 includes, at operation 2410, determining a quantization parameter used in deblocking processing based on the use of a transform skip (TS) mode or an adaptive color transform (ACT) mode for encoding and decoding a block of a video during a conversion between the block of the video and a bitstream representation of the video. Method 2400 further includes, at operation 2420, performing the conversion based on the determination.

[1376] In some embodiments, the quantization parameter is determined based on Max(QpPrimeTsMin, qP)-(cu_act_enabled_flag[xTbY][yTbY]? N:0), where N is a positive integer and qP is a real number, wherein QpPrimeTsMin represents the minimum quantization parameter of a block encoded in the TS mode, and wherein cu_act_enabled_flag is a flag indicating the use of the ACT mode. In some embodiments, the quantization parameter is determined based on Max(QpPrimeTsMin, qP-(cu_act_enabled_flag[xTbY][yTbY]? N:0)), where N is a positive integer and qP is a real number. QpPrimeTsMin represents the minimum quantization parameter of a block encoded in the TS mode, and cu_act_enabled_flag is a flag indicating the use of the ACT mode. In some embodiments, qP is equal to the chrominance quantization parameter of the Cb or Cr component. In some embodiments, N is different for blocks of different color components. In some embodiments, N is equal to 5 when the block is a Cb, B, G, or U component. In some embodiments, N is equal to 3 when the block is a Cr, R, B, or V component.

[1377] Figure 25It is a flowchart representation of a method for video processing according to the present technology. Method 2500 includes, at operation 2510, performing a conversion between a color component block of a video and a bitstream representation of the video. The bitstream representation conforms to a rule that specifies that the size of a quantization group of chrominance components is greater than a threshold K. The quantization group includes one or more codec units carrying quantization parameters.

[1378] In some embodiments, the size includes the width of the quantization group. In some embodiments, the color component is a chrominance component. In some embodiments, K is 4. In some embodiments, the color component is a luminance component. In some embodiments, K is 8.

[1379] In some embodiments, the conversion includes encoding the video into a bitstream representation. In some embodiments, the conversion includes decoding the bitstream representation into a video.

[1380] Some embodiments of the disclosed technology include making a decision or determination to enable a video processing tool or mode. In one example, when a video processing tool or mode is enabled, the encoder will use or implement the tool or mode when processing video blocks, but may not have to modify the generated bitstream based on the use of the tool or mode. That is, the conversion from a video block to a bitstream representation of the video will use the video processing tool or mode when it is enabled based on the decision or determination. In another example, when a video processing tool or mode is enabled, the decoder will process the bitstream when it is known that the bitstream has been modified based on the video processing tool or mode. That is, the conversion from a bitstream representation of the video to a video block will be performed using the video processing tool or mode enabled based on the decision or determination.

[1381] Some embodiments of the disclosed technology include making a decision or determination to disable a video processing tool or mode. In one example, when a video processing tool or mode is disabled, the encoder will not use the tool or mode to convert a video block into a bitstream representation of the video. In another example, when a video processing tool or mode is disabled, the decoder will process the bitstream when it is known that the bitstream has not been modified using the video processing tool or mode enabled based on the decision or determination.

[1382] The solutions, examples, embodiments, modules, and functional operations disclosed in this document and other ones can be implemented in digital electronic circuits or in computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or in a combination 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 execution or control of operations by 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 affecting a machine-readable propagated signal, or a combination of one or more of them. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a storage device, a combination of matter affecting 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, such as including programmable processors, computers, or multiple processors or computers. In addition to hardware, the apparatus can also include code that creates an execution environment for the computer program being discussed, e.g., code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., an electrical, optical, or electromagnetic signal generated by a machine, which is generated for encoding information for transmission to a suitable receiver device.

[1383] A computer program (also called a program, software, software application, script, or code) can be written in any form of programming language (including a compiled or interpreted language) and can be deployed in any form, including as a stand-alone program or as modules, components, subroutines, or other units suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. The program can be stored in a part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program being discussed, or in multiple coordinated files (e.g., files that store one or more modules, subroutines, or portions of code). A computer program can be deployed to execute on one computer or on multiple computers located at one location or distributed across multiple locations and interconnected by a communication network.

[1384] The processes and logical flows described in this document can be executed by one or more programmable processors to execute one or more computer programs, thereby performing functions by operating on input data and generating output. The processing and logical flows can also be executed by, and can also be embodied as, special-purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).

[1385] For example, processors suitable for executing computer programs include both 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 essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to, one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, to receive data therefrom, or to 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 can be supplemented by, or incorporated in, special-purpose logic circuitry.

[1386] Although this patent document contains many details, these details should not be construed as limiting the scope of any invention or of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of a particular invention. Certain features that are described in this patent document in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, the various features that are described in the context of a single embodiment can also be implemented separately in multiple embodiments or in any suitable subcombination. Moreover, although the above features may be described as acting in certain combinations and even initially claimed as such, in some cases, one or more features from a claimed combination can be excised from the combination, and the claimed combination may refer to a subcombination or a variant of a subcombination.

[1387] Similarly, although the operations are depicted in the drawings in a particular order, this should not be construed as requiring that the operations be performed in the particular order shown or in a sequential order, or that all of the illustrated operations be performed to achieve the desired results. Additionally, the separation of various system components in the embodiments described in this patent document should not be construed as required in all embodiments.

[1388] Only some embodiments and examples have been described, and other embodiments, enhancements, and variations can be made based on what is described and illustrated in this patent document.

Claims

1. A method for processing video data, comprising: applying a deblocking filter to video blocks of the plurality of color components during conversion between a video including the plurality of color components and a bitstream of the video; performing the conversion based on the application; wherein, determining a deblocking filter strength of a deblocking filter for video blocks of each component in the plurality of color components according to a rule; wherein the rule specifies using different ways to determine the deblocking filter strength of video blocks of each component in the plurality of color components; and wherein the plurality of color components at least includes a Cb component and a Cr component; and wherein each component in the plurality of color components is associated with a deblocking parameter offset of a variable beta and a variable tC in different video unit levels for determining the deblocking filter strength; and wherein the different video unit levels include a picture parameter set PPS, wherein a first syntax element associated with the Cb component indicating the deblocking parameter offset of the variable beta in the PPS is pps_cb_beta_offset_div2, and a first syntax element associated with the Cr component indicating the deblocking parameter offset of the variable beta in the PPS is pps_cr_beta_offset_div2; and wherein a second syntax element associated with the Cb component indicating the deblocking parameter offset of the variable tC in the PPS is pps_cb_tc_offset_div2, and a second syntax element associated with the Cr component indicating the deblocking parameter offset of the variable tC in the PPS is pps_cr_tc_offset_div2.

2. The method according to claim 1, wherein pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) of the variable beta and the variable tC applied to the Cb component of a slice of a reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the slice header of the slice of the reference PPS; and wherein pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) of the variable beta and the variable tC applied to the Cr component of a slice of a reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the slice header of the slice of the reference PPS.

3. The method according to claim 1, wherein, The different video unit levels include a picture header, wherein a third syntax element associated with the Cb component indicating the deblocking parameter offset of the variable beta in the picture header is pic_cb_beta_offset_div2, and a third syntax element associated with the Cr component indicating the deblocking parameter offset of the variable beta in the picture header is pic_cr_beta_offset_div2; and The fourth syntax element associated with the Cb component that indicates the deblocking parameter offset of variable tC in the picture header is pic_cb_tc_offset_div2, and the fourth syntax element associated with the Cr component that indicates the deblocking parameter offset of variable tC in the picture header is pic_cr_tc_offset_div2.

4. The method according to claim 3, wherein pic_cb_beta_offset_div2 and pic_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variables beta and tC applied to the Cb component of the slice associated with the picture header; and wherein, pic_cr_beta_offset_div2 and pic_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variables beta and tC applied to the Cr component of the slice associated with the picture header.

5. The method according to claim 1, wherein The different video unit levels include a slice header, wherein the fifth syntax element associated with the Cb component that indicates the deblocking parameter offset of variable beta in the slice header is slice_cb_beta_offset_div2, and the fifth syntax element associated with the Cr component that indicates the deblocking parameter offset of variable beta in the slice header is slice_cr_beta_offset_div2; and the sixth syntax element associated with the Cb component that indicates the deblocking parameter offset of variable tC in the slice header is slice_cb_tc_offset_div2, and the sixth syntax element associated with the Cr component that indicates the deblocking parameter offset of variable tC in the slice header is slice_cr_tc_offset_div2.

6. The method according to claim 5, wherein, slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variables beta and variable tc applied to the Cb component of the current slice; and wherein, slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variables beta and variable tc applied to the Cr component of the current slice.

7. The method according to claim 1, wherein The conversion includes encoding the video into the bitstream.

8. The method according to claim 1, wherein The conversion includes decoding the video from the bitstream.

9. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein, The instructions, when executed by the processor, cause the processor to: apply a deblocking filter to video blocks of the plurality of color components in a conversion between a video including a plurality of color components and a bitstream of the video; and perform the conversion based on the application, wherein the deblocking filter strength of the deblocking filter for video blocks of each component in the plurality of color components is determined according to rules. Among them, the rule stipulates using different methods to determine the deblocking filter strength of the video block of each of the multiple color components; Among them, the multiple color components at least include the Cb component and the Cr component; and among them, each of the multiple color components is associated with a deblocking parameter offset of variables beta and tC in different video unit levels for determining the deblocking filter strength; and Among them, the different video unit levels include the picture parameter set PPS, where the first syntax element associated with the Cb component that indicates the deblocking parameter offset of variable beta in the PPS is pps_cb_beta_offset_div2, and the first syntax element associated with the Cr component that indicates the deblocking parameter offset of variable beta in the PPS is pps_cr_beta_offset_div2; and among them, the second syntax element associated with the Cb component that indicates the deblocking parameter offset of variable tC in the PPS is pps_cb_tc_offset_div2, and the second syntax element associated with the Cr component that indicates the deblocking parameter offset of variable tC in the PPS is pps_cr_tc_offset_div2.

10. The apparatus according to claim 9, wherein, Among them, pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 stipulate the default deblocking parameter offsets (divided by 2) of variables beta and tC applied to the Cb component of the slice of the reference PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the slice header of the slice of the reference PPS; and wherein, pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 stipulate the default deblocking parameter offsets (divided by 2) of variables beta and tC applied to the Cr component of the slice of the reference PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the slice header of the slice of the reference PPS.

11. The apparatus according to claim 9, wherein, The different video unit levels include the picture header, where the third syntax element associated with the Cb component that indicates the deblocking parameter offset of variable beta in the picture header is pic_cb_beta_offset_div2, and the third syntax element associated with the Cr component that indicates the deblocking parameter offset of variable beta in the picture header is pic_cr_beta_offset_div2; and the fourth syntax element associated with the Cb component that indicates the deblocking parameter offset of variable tC in the picture header is pic_cb_tc_offset_div2, and the fourth syntax element associated with the Cr component that indicates the deblocking parameter offset of variable tC in the picture header is pic_cr_tc_offset_div2; where pic_cb_beta_offset_div2 and pic_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variable beta and variable tC applied to the Cb component of the slice associated with the picture header; and where pic_cr_beta_offset_div2 and pic_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variable beta and variable tC applied to the Cr component of the slice associated with the picture header.

12. The apparatus according to claim 9, wherein, The different video unit levels include a slice header, where the fifth syntax element associated with the Cb component indicating the deblocking parameter offset of variable beta in the slice header is slice_cb_beta_offset_div2, and the fifth syntax element associated with the Cr component indicating the deblocking parameter offset of variable beta in the slice header is slice_cr_beta_offset_div2; and the sixth syntax element associated with the Cb component indicating the deblocking parameter offset of variable tC in the slice header is slice_cb_tc_offset_div2, and the sixth syntax element associated with the Cr component indicating the deblocking parameter offset of variable tC in the slice header is slice_cr_tc_offset_div2; where slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variable beta and variable tc applied to the Cb component of the current slice; and where slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variable beta and variable tc applied to the Cr component of the current slice.

13. A non-transitory computer-readable storage medium storing instructions, wherein, The instruction causes the processor to: apply a deblocking filter to video blocks of the multiple color components in a conversion between a video including multiple color components and a bitstream of the video; perform the conversion based on the application, where the deblocking filter strength of the video blocks of each component in the multiple color components is determined according to a rule, where the rule specifies using different ways to determine the deblocking filter strength of the video blocks of each component in the multiple color components; where the multiple color components include at least a Cb component and a Cr component; and where each component in the multiple color components is associated with deblocking parameter offsets of variable beta and variable tC in different video unit levels for determining the deblocking filter strength; and Among them, the different video unit levels include a Picture Parameter Set (PPS). The first syntax element associated with the Cb component that indicates the deblocking parameter offset of the variable beta in the PPS is pps_cb_beta_offset_div2, and the first syntax element associated with the Cr component that indicates the deblocking parameter offset of the variable beta in the PPS is pps_cr_beta_offset_div2. And among them, the second syntax element associated with the Cb component that indicates the deblocking parameter offset of the variable tC in the PPS is pps_cb_tc_offset_div2, and the second syntax element associated with the Cr component that indicates the deblocking parameter offset of the variable tC in the PPS is pps_cr_tc_offset_div2.

14. The non - transitory computer - readable storage medium according to claim 13, Among them, pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) of the variables beta and tC applied to the Cb component of the slice of the reference PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the slice header of the slice of the reference PPS; and Among them, pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) of the variables beta and tC applied to the Cr component of the slice of the reference PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the slice header of the slice of the reference PPS.

15. The non-transitory computer-readable storage medium according to claim 13, wherein, The different video unit levels include a picture header. Among them, the third syntax element associated with the Cb component that indicates the deblocking parameter offset of the variable beta in the picture header is pic_cb_beta_offset_div2, and the third syntax element associated with the Cr component that indicates the deblocking parameter offset of the variable beta in the picture header is pic_cr_beta_offset_div2. And the fourth syntax element associated with the Cb component that indicates the deblocking parameter offset of the variable tC in the picture header is pic_cb_tc_offset_div2, and the fourth syntax element associated with the Cr component that indicates the deblocking parameter offset of the variable tC in the picture header is pic_cr_tc_offset_div2; Among them, pic_cb_beta_offset_div2 and pic_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of the variables beta and tC applied to the Cb component of the slice associated with the picture header; and Among them, pic_cr_beta_offset_div2 and pic_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variable beta and variable tC applied to the Cr component of the slice associated with the picture header.

16. The non-transitory computer-readable storage medium according to claim 13, wherein, The different video unit levels include a slice header. Among them, the fifth syntax element associated with the Cb component that indicates the deblocking parameter offset of variable beta in the slice header is slice_cb_beta_offset_div2, and the fifth syntax element associated with the Cr component that indicates the deblocking parameter offset of variable beta in the slice header is slice_cr_beta_offset_div2; and the sixth syntax element associated with the Cb component that indicates the deblocking parameter offset of variable tC in the slice header is slice_cb_tc_offset_div2, and the sixth syntax element associated with the Cr component that indicates the deblocking parameter offset of variable tC in the slice header is slice_cr_tc_offset_div2; Among them, slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variable beta and variable tc applied to the Cb component of the current slice; and Among them, slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variable beta and variable tc applied to the Cr component of the current slice.

17. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method executed by a video processing device, wherein, The method includes: Applying a deblocking filter to video blocks of multiple color components of the video; Generating the bitstream based on the application; Among them, the deblocking filter strength of the video blocks of each component among the multiple color components is determined according to a rule; Among them, the rule specifies using different ways to determine the deblocking filter strength of the video blocks of each component among the multiple color components; Among them, the multiple color components at least include the Cb component and the Cr component; and each component among the multiple color components is associated with the deblocking parameter offsets of variable beta and variable tC in different video unit levels for determining the deblocking filter strength; and Among them, the different video unit levels include a Picture Parameter Set (PPS). The first syntax element associated with the Cb component that indicates the deblocking parameter offset of the variable beta in the PPS is pps_cb_beta_offset_div2, and the first syntax element associated with the Cr component that indicates the deblocking parameter offset of the variable beta in the PPS is pps_cr_beta_offset_div2. And among them, the second syntax element associated with the Cb component that indicates the deblocking parameter offset of the variable tC in the PPS is pps_cb_tc_offset_div2, and the second syntax element associated with the Cr component that indicates the deblocking parameter offset of the variable tC in the PPS is pps_cr_tc_offset_div2.

18. The non-transitory computer-readable recording medium according to claim 17, Among them, pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) of the variables beta and tC applied to the Cb component of the slice of the reference PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the slice header of the slice of the reference PPS; and among them, pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) of the variables beta and tC applied to the Cr component of the slice of the reference PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the slice header of the slice of the reference PPS.

19. The non-transitory computer-readable recording medium according to claim 17, wherein, The different video unit levels include a picture header. Among them, the third syntax element associated with the Cb component that indicates the deblocking parameter offset of the variable beta in the picture header is pic_cb_beta_offset_div2, and the third syntax element associated with the Cr component that indicates the deblocking parameter offset of the variable beta in the picture header is pic_cr_beta_offset_div2. And the fourth syntax element associated with the Cb component that indicates the deblocking parameter offset of the variable tC in the picture header is pic_cb_tc_offset_div2, and the fourth syntax element associated with the Cr component that indicates the deblocking parameter offset of the variable tC in the picture header is pic_cr_tc_offset_div2; among them, pic_cb_beta_offset_div2 and pic_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of the variables beta and tC applied to the Cb component of the slice associated with the picture header; Among them, pic_cr_beta_offset_div2 and pic_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variable beta and variable tC applied to the Cr component of the slice associated with the picture header; Among them, the different video unit levels include a slice header, wherein the fifth syntax element associated with the Cb component indicating the deblocking parameter offset of variable beta in the slice header is slice_cb_beta_offset_div2, and the fifth syntax element associated with the Cr component indicating the deblocking parameter offset of variable beta in the slice header is slice_cr_beta_offset_div2; and the sixth syntax element associated with the Cb component indicating the deblocking parameter offset of variable tC in the slice header is slice_cb_tc_offset_div2, and the sixth syntax element associated with the Cr component indicating the deblocking parameter offset of variable tC in the slice header is slice_cr_tc_offset_div2; Among them, slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variable beta and variable tc applied to the Cb component of the current slice; and Among them, slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of variable beta and variable tc applied to the Cr component of the current slice.

20. A method for storing a bitstream of video, comprising: Applying a deblocking filter to video blocks of multiple color components of the video; Generating the bitstream based on the application; And Storing the bitstream in a non-transitory computer-readable recording medium, wherein the deblocking filter strength of the video blocks of each component among the multiple color components is determined according to a rule, wherein the rule specifies using different ways to determine the deblocking filter strength of the video blocks of each component among the multiple color components; wherein the multiple color components at least include a Cb component and a Cr component; and wherein each component among the multiple color components is associated with deblocking parameter offsets of variable beta and variable tC in different video unit levels for determining the deblocking filter strength; and Among them, the different video unit levels include a Picture Parameter Set (PPS). The first syntax element associated with the Cb component that indicates the deblocking parameter offset of the variable beta in the PPS is pps_cb_beta_offset_div2, and the first syntax element associated with the Cr component that indicates the deblocking parameter offset of the variable beta in the PPS is pps_cr_beta_offset_div2. And among them, the second syntax element associated with the Cb component that indicates the deblocking parameter offset of the variable tC in the PPS is pps_cb_tc_offset_div2, and the second syntax element associated with the Cr component that indicates the deblocking parameter offset of the variable tC in the PPS is pps_cr_tc_offset_div2.

Citation Information

Patent Citations

  • Video encoding / decoding apparatus and method for color image

    CN101616329A

  • Adaptive video deblocking

    US20190116358A1

Cited By

  • Signaling of quantization parameters in video coding

    US12666024B2