Cross-Component Adaptive Loop Filtering in Video Coding and Decoding

By introducing motion vector management and CC-ALF technologies into video encoding and decoding technology, the problem of insufficient video encoding and decoding performance in the prior art is solved, and higher compression ratio and lower complexity are achieved, and parallel processing is achieved.

CN114651442BActive Publication Date: 2025-06-13DOUYIN CO LTD

Patent Information

Application Number
CN202080071392.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-10-09
Filing Date
2020-10-09
Publication Date
2025-06-13
Estimated Expiration
2040-10-09

AI Technical Summary

Technical Problem

The existing video encoding and decoding technology has insufficient performance in terms of compression ratio and parallelization implementation, especially in the process of motion vector management and de-blocking filtering.

Method used

A method involving digital video encoding and decoding is proposed, specifically including the management of motion vectors and the use of cross-component adaptive loop filtering (CC-ALF) and other technologies in the video encoding and decoding process to improve the efficiency of video processing.

Benefits of technology

Through this method, the compression ratio can be improved and the complexity can be achieved in the existing video encoding and decoding standards, and parallel processing can be improved, and the performance of video encoding and decoding can be improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114651442B_ABST
    Figure CN114651442B_ABST
Patent Text Reader

Abstract

An exemplary method for video processing includes: determining whether to enable a cross-component adaptive loop filtering tool for a current video block of a video based on the color properties of the video for the conversion between the current video block of the video and the bitstream representation of the video. The method further includes performing the conversion according to the determination.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - reference to related applications

[0002] According to the applicable patent laws and / or rules under the Paris Convention, this application timely claims the priority and benefits of International Patent Application No. PCT / CN2019 / 110229 filed on October 9, 2019. For all purposes under the law, the entire disclosure of the foregoing application is incorporated by reference as part of the disclosure of this application. Technical field

[0003] This patent document relates to a video encoding and decoding technology, device, and system. Background art

[0004] Currently, efforts are being made to improve the performance of current video encoder technologies to provide better compression ratios or to provide video encoding and decoding and decoding solutions that allow for lower complexity or parallelized implementations. Industry experts have recently proposed several new video encoding and decoding tools and are currently testing them to determine their effectiveness. Summary of the invention

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

[0006] In one representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between a current video unit of a video and a bit - stream representation of the video, and based on the color property of the video, determining whether to enable a cross - component adaptive loop filtering process for the current video unit. The method also includes performing the conversion according to the determination.

[0007] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between a video including multiple parts and a bit - stream representation of the video. The bit - stream representation conforms to format rules that specify that, based on whether a second syntax element is included in a second video unit of the bit - stream representation, a first syntax element indicating the use of an encoding and decoding tool for encoding and decoding at least a first part of the multiple parts is selectively included in a first video unit of the bit - stream representation.

[0008] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between a picture of a video and a bit - stream representation of the video. During the conversion, one or more positions of at least one quantization matrix or at least one de - quantization matrix of a block are invariant.

[0009] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between blocks of a video and a bitstream representation of the video, and determining the use of a chrominance quantization parameter offset list based on characteristics of the blocks. The characteristics include the prediction mode of the blocks, picture type, slice type, tile type, or stripe type. The method further includes performing the conversion based on the determination.

[0010] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between blocks of a video and a bitstream representation of the video, and determining quantization parameters used during deblocking filtering based on characteristics of the blocks. The method further includes performing the conversion based on the determination.

[0011] 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 picture of a video and a bitstream representation of the video. During the conversion, the quantization parameter of the chrominance component of the picture is constrained to be the same as a chrominance row segment having a length of 4×m and a position (4×m×x, 2×y) relative to the top left corner of the picture, where x and y are non-negative integers and m is a positive integer.

[0012] 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 picture of a video and a bitstream representation of the video. During the conversion, the quantization parameter of the chrominance component of the picture is constrained to be the same as a chrominance column segment having a length of 4×n and a position (4×n×y, 2×x) relative to the top left corner of the picture, where x and y are non-negative integers and n is a positive integer.

[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 an encoded / decoded representation of the video unit, where during the conversion, deblocking filtering is used at the boundary of the video unit such that when a chrominance quantization parameter (QP) table is used to derive the parameters of the deblocking filtering, the processing of the chrominance QP table is performed on individual chrominance QP values.

[0014] The method includes performing a conversion between a video unit and a bitstream representation unit of the video, where during the conversion, deblocking filtering is used at the boundary of the video unit such that when a chrominance quantization parameter (QP) table is used to derive the parameters of the deblocking filtering, the processing of the chrominance QP table is performed on individual chrominance QP values.

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

[0016] In another representative aspect, the disclosed technology can be used to provide another method for video processing. The method includes performing a conversion between a video unit and a bitstream representation of the video unit, where, during the conversion, deblocking filtering is used at the boundaries of the video unit such that a chrominance QP offset is used in the deblocking filtering, and information belonging to the same luma coding unit is used for the deblocking filtering and for deriving the chrominance QP offset.

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

[0018] In another representative aspect, the disclosed technology can be used to provide another method for video processing. The method includes performing a conversion between a video unit and a bitstream representation of the video unit, where, during the conversion, deblocking filtering is used at the boundaries of the video unit such that a chrominance QP offset is used in the deblocking filtering, and the chrominance QP offset used in the deblocking filtering is the same regardless of whether the JCCR coding method is applied at the boundaries of the video unit or a method different from the JCCR coding method is applied at the boundaries of the video unit.

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

[0020] Additionally, in a representative aspect, a device in a video system is disclosed, including a processor and a non-transitory memory having instructions thereon. When the instructions are executed by the processor, the processor is caused to implement any one or more of the disclosed methods.

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

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

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

[0024] The above and other aspects and features of the disclosed technology are described in more detail in the drawings, the specification, and the claims. Description of the Drawings

[0025] Figure 1 An example of the overall processing flow of the block-based deblocking filtering process is shown.

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

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

[0028] Figure 4 An example of the pixels involved in the filtering on / off decision and strong / weak filtering selection is shown.

[0029] Figure 5 The overall processing flow of the deblocking filtering process of the overall processing flow of the deblocking filtering process in VVC is shown.

[0030] Figure 6 An example of the luma deblocking filtering process in VVC is shown.

[0031] Figure 7 An example of the chroma deblocking filtering process in VVC is shown.

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

[0033] Figure 9A An example of the central position of the chroma block is shown.

[0034] Figure 9B Another example of the central position of the chroma block is shown.

[0035] Figure 10 Examples of blocks at the P side and the Q side are shown.

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

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

[0038] Figure 13 It shows a flowchart of an exemplary method for video coding and decoding.

[0039] Figure 14A It shows an example of the arrangement of CC-ALF for other loop filtering (b) diamond filtering.

[0040] Figure 14B It shows an example of the arrangement of CC-ALF for diamond filtering.

[0041] Figure 15 It is a block diagram showing an exemplary video coding and decoding system.

[0042] Figure 16 It is a block diagram showing an encoder according to some embodiments of the present disclosure.

[0043] Figure 17 It is a block diagram showing a decoder according to some embodiments of the present disclosure.

[0044] Figure 18 It is a block diagram of an exemplary video processing system in which the disclosed technology can be implemented.

[0045] Figure 19 It is a flowchart representation of a method for video processing according to the present technology.

[0046] Figure 20 It is a flowchart representation of another method for video processing according to the present technology.

[0047] Figure 21 It is a flowchart representation of another method for video processing according to the present technology.

[0048] Figure 22 It is a flowchart representation of another method for video processing according to the present technology.

[0049] Figure 23 It is a flowchart representation of another method for video processing according to the present technology.

[0050] Figure 24 It is a flowchart representation of another method for video processing according to the present technology.

[0051] Figure 25 It is a flowchart representation of yet another method for video processing according to the present technology. Detailed Description

[0052] 1. Video Coding and Decoding in HEVC / H.265

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

[0054] 2.1. Deblocking Scheme in HEVC

[0055] The deblocking filtering process is performed on each CU in the same order as the decoding process. First, vertical edges are filtered (horizontal filtering), and then horizontal edges are filtered (vertical filtering). For both the luminance component and the chrominance component, filtering is applied to the 8x8 block boundaries determined to be filtered. 4x4 block boundaries are not processed to reduce complexity.

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

[0057] 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 a CU, are always involved in the filtering because a CU boundary is always also a TU boundary or a PU boundary. When the PU shape is 2NxN (N>4) and the RQT depth is equal to 1, TU boundaries at the 8x8 block grid and PU boundaries between each PU within the CU are involved in the filtering. An exception is when a PU boundary is within a TU, the boundary is not filtered.

[0058] 2.1.1. Boundary Strength Calculation

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

[0060] Let P and Q be defined as the blocks involved in filtering, where P represents the block located on the left (for vertical edge cases) or top (for horizontal edge cases) side of the boundary, and Q represents the block located on the right (for vertical edge cases) or bottom (for horizontal edge cases) side of the boundary. Figure 2 It illustrates how to calculate the Bs value based on the intra-coding mode, the presence of non-zero transform coefficients and motion information, reference pictures, the number of motion vectors, and the motion vector differences.

[0061] The Bs is calculated based on 4x4 blocks but remapped to an 8x8 grid. The maximum value of the two Bs values corresponding to the 8 pixels that form a row in the 4x4 grid is selected as the Bs of the boundary in the 8x8 grid.

[0062] To reduce the row buffer memory requirement, for CTU boundaries only, the information in every second block (4x4 grid) in the left or top side is reused, as Figure 3 shown.

[0063] 2.1.2. β and tC determination

[0064] The filtering on / off determination, the strong and weak filtering selection, and the thresholds β and t involved in the weak filtering process C are derived based on the luminance quantization parameters QP of the P and Q blocks respectively P and QP Q . The Q used to derive β and t C is calculated as follows.

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

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

[0067] Table 1 Derivation of Threshold Variables β and t from Q C

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

[0069] 2.1.3.4 Filtering On / Off Determination for Rows

[0070] The filtering on / off determination is made for four rows as a unit. Figure 4The pixels involved in the filtering on / off decision are illustrated. Six pixels in the two red frames of the first four rows are used to determine the filtering on / off of the four rows. Six pixels in the two red frames of the second four rows are used to determine the filtering on / off of the second four rows.

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

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

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

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

[0075] For the second four rows, the decision is made in the same manner as above.

[0076] 2.1.4.4-row strong / weak filtering selection

[0077] After the first four rows are determined to be filtered on in the filtering on / off decision, if the following two conditions are satisfied, strong filtering is used for the filtering of the first four rows. Otherwise, weak filtering is used for the filtering. The pixels involved are Figure 4The pixels for filtering on / off decisions shown are the same.

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

[0079] 2) 2*(dp3 + dq3) < (β >> 2), |p3 3 –p0 3 | + |q0 3 –q3 3 | <

[0080] (β >> 3) and |p0 3 –q0 3 | < (5*t C + 1) >> 1

[0081] In the same way, if the following two conditions are met, strong filtering is used for filtering the second 4 lines. Otherwise, weak filtering is used for filtering.

[0082] 1) 2*(dp4 + dq4) < (β >> 2), |p3 4 –p0 4 | + |q0 4 –q3 4 | <

[0083] (β >> 3) and |p0 4 –q0 4 | < (5*t C + 1) >> 1

[0084] 2) 2*(dp7 + dq7) < (β >> 2), |p3 7 –p0 7 | + |q0 7 –q3 7 | <

[0085] (β >> 3) and |p0 7 –q0 7 | < (5*t C + 1) >> 1

[0086] 2.1.4.1. Strong Filtering

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

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

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

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

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

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

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

[0094] 2.1.4.2. Weak Filtering

[0095] It is defined as follows.

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

[0097] When abs(() is less than t C*At 10 o'clock,

[0098] (= Clip3(-t C , t C , ()

[0099] p 0 ’ = Clip1 Y (p 0 + ()

[0100] q 0 ’ = Clip1 Y (q 0 - ()

[0101] If dEp1 equals 1,

[0102] then (p = Clip3(-(t C >> 1), t C >> 1, (((p 2 + p 0 + 1) >> 1) – p 1 + () >> 1)

[0103] p 1 ’ = Clip1 Y (p 1 + (p)

[0104] If dEq1 equals 1,

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

[0106] q 1 ’ = Clip1 Y (q 1 + (q)

[0107] It should be noted that using three pixels as input modifies at most two pixels for each P and Q block respectively.

[0108] 2.1.4.3. Chrominance Filtering

[0109] The Bs of chrominance filtering is inherited from luminance. If Bs > 1 or if coded chrominance coefficients exist, chrominance filtering is performed. There are no other filtering decisions. And only one filtering is applied to chrominance. The filtering selection process is not used for chrominance. The filtered sample values p 0 ’ and q 0 ’ are derived as follows.

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

[0111] p 0 ’ = Clip1 C (p 0 +( )

[0112] q 0 ’ = Clip1 C (q 0 -( )

[0113] 2.2 Deblocking Scheme in VVC

[0114] In VTM6, the deblocking filtering process is mostly the same as those in HEVC. However, the following modifications are added.

[0115] A) Filtering strength of deblocking filtering depending on the average luminance level of the reconstructed samples.

[0116] B) The deblocking tC table is extended and adapted to 10-bit video.

[0117] C) 4x4 grid deblocking of luminance.

[0118] D) Stronger deblocking filtering of luminance.

[0119] E) Stronger deblocking filtering of chrominance.

[0120] F) Deblocking filtering at sub-block boundaries.

[0121] G) Deblocking decision adapted to smaller differences in motion.

[0122] Figure 5 The flowchart of the deblocking filtering process in VVC for the coding / decoding unit is illustrated.

[0123] 2.2.1. Filtering Strength Depending on the Reconstructed Average Luminance

[0124] In HEVC, the filtering strength of deblocking filtering is controlled by variables β and t L derived from the average quantization parameter qP C . In VTM6, if the SPS flag of this method is true, the deblocking filtering controls the strength of deblocking filtering 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:

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

[0126] where 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 based on the threshold signaled in the SPS. After that, qP L (derived as follows) is used to derive β and t C。

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

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

[0129] 2.2.2. Luma 4x4 Deblocking Grid

[0130] HEVC uses an 8x8 deblocking grid for both luma and chroma. In VTM6, deblocking on a 4x4 grid of luma boundaries was introduced to handle blocking artifacts from rectangular transform shapes. Parallel-friendly luma deblocking on the 4x4 grid is achieved by limiting the number of samples to be deblocked to 1 sample per side of the vertical luma boundary when one side has a width of 4 or less, or to 1 sample per side of the horizontal luma boundary when one side has a height of 4 or less.

[0131] 2.2.3. Luma Boundary Strength Derivation

[0132] The detailed boundary strength derivation can be found in Table 2. The conditions in Table 2 are checked in order.

[0133] Table 2 Boundary Strength Derivation

[0134]

[0135]

[0136]

[0137] 2.2.4. Stronger Luminance Deblocking Filter

[0138] The proposal uses bilinear filtering when the samples on either side of the boundary belong to a large block. Samples belonging to a large block are defined as having a width >= 32 for vertical edges and a height >= 32 for horizontal edges.

[0139] The bilinear filtering is listed as follows.

[0140] The block boundary samples pi for i = 0 to Sp-1 and qi for j = 0 to Sq-1 (pi and qi follow the definition of HEVC deblocking above) are then replaced by linear interpolation as follows:

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

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

[0143] where tcPD i and tcPD j are position-dependent trimming terms, described in Section 2.2.5, and g j , f i , Middle s,t , P s and Q s are given as follows:

[0144]

[0145]

[0146]

[0147] 2.2.5. Luminance Deblocking Control

[0148] The deblocking decision process is described in this sub-section.

[0149] Use a wider - stronger luminance filter only when all of Condition1, Condition2, and Condition 3 are true.

[0150] Condition 1 is the "large block condition". This condition detects whether the sample points on the P side and the Q side belong to large blocks, which are represented by the variables bSidePisLargeBlk and bSideQisLargeBlk respectively. bSidePisLargeBlk and bSideQisLargeBlk are defined as follows.

[0151] bSidePisLargeBlk = ((the edge type is vertical and p 0 belongs to the CU, width >= 32) || (the edge type is horizontal and p 0 belongs to the CU, height >= 32))? TRUE : FALSE

[0152] bSideQisLargeBlk = ((the edge type is vertical and q 0 belongs to the CU, width >= 32) || (the edge type is horizontal and q 0 belongs to the CU, and height >= 32))? TRUE : FALSE

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

[0154] Condition1 = (bSidePisLargeBlk || bSidePisLargeBlk)? TRUE : FALSE

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

[0156] dp0, dp3, dq0, dq3 are derived first, as in HEVC

[0157] If (the P side is greater than or equal to 32)

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

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

[0160] If (the Q side is greater than or equal to 32)

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

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

[0163] dpq0, dpq3, dp, dq, d are then derived as in HEVC.

[0164] Then Condition 2 is defined as follows.

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

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

[0167] If both Condition1 and Condition2 are valid, it is checked whether any block uses sub - blocks:

[0168] If (bSidePisLargeBlk)

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

[0170] Sp = 5

[0171] Otherwise

[0172] Sp = 7

[0173] Otherwise

[0174] Sp = 3

[0175] If (bSideQisLargeBlk)

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

[0177] Sq = 5

[0178] Otherwise

[0179] Sq = 7

[0180] Otherwise

[0181] Sq = 3

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

[0183] In the Condition3StrongFilterCondition, the following variables are exported:

[0184] Export dpq as in HEVC.

[0185] sp3 = Abs(p3 - p0), and export it as in HEVC

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

[0187] If (Sp == 5)

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

[0189] Otherwise

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

[0191] sq3 = Abs(q0 - q3), and export it as in HEVC

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

[0193] If (Sq == 5)

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

[0195] Otherwise

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

[0197] As in the HEVC export, 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

[0198] Figure 6 The flowchart of the luma deblocking filtering process is illustrated.

[0199] 2.2.6. Chroma Strong Deblocking Filter

[0200] Define the following strong deblocking filter for chroma:

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

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

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

[0204] The proposed chrominance filtering performs deblocking on a 4x4 chrominance sample grid.

[0205] 2.2.7. Chrominance Deblocking Control

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

[0207] Figure 7 The flowchart of the chrominance deblocking filtering process is illustrated.

[0208] 2.2.8. Position-Dependent Clipping

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

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

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

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

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

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

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

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

[0217] After defining the thresholds, the filtered p’i and q’i sample values are trimmed according to the tcP and tcQ trimming values:

[0218] p” i = clip3(p’ i + tcP i , p’ i - tcP i , p’ i );

[0219] q” j = clip3(q’ j + tcQ j , q’ j - tcQ j , q’ j );

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

[0221] 2.2.9. Sub - block Deblocking Adjustment

[0222] To allow parallel - friendly deblocking with long filtering and sub - block deblocking, long filtering is restricted to modifying at most 5 samples on the side where sub - block deblocking (AFFINE or ATMVP) is used, as shown in the luminance control of long filtering. Additionally, sub - block deblocking is adjusted such that sub - block boundaries on an 8x8 grid close to the CU or implicit TU boundary are restricted to modifying at most two samples on each side.

[0223] The following applies to those not aligned with the CU boundary.

[0224]

[0225] Where the edge equal to 0 corresponds to the CU boundary, the boundary equal to 2 or equal to orthogonalLength - 2 corresponds to the sub-block boundary 8 samples away from the CU boundary, and so on. Where 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.

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

[0227] 2.2.10. Deblocking decision adapted to small motion differences

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

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

[0230] 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 its name indicates, CIIP prediction combines the inter-prediction signaling with the intra-prediction signaling. The inter-prediction signaling P in the CIIP mode inter is derived using the same inter-prediction process applied to the regular merge mode; and the intra-prediction signaling P intra is derived in planar mode after the regular intra-prediction process. Then, the intra- and inter-prediction signalings are combined using weighted averaging, where the weight values are calculated as follows depending on the encoding / decoding modes of the top and left neighboring blocks:

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

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

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

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

[0235] – Otherwise, set wt to 1.

[0236] The CIIP prediction is formed as follows:

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

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

[0239] In some embodiments, a chrominance QP table is used. In some embodiments, a signaling mechanism is used for the chrominance QP table such that it can flexibly provide an opportunity for the encoder to optimize the tables for SDR and HDR content. It supports signaling the table separately for the Cb and Cr components. The proposed mechanism signals the chrominance QP table as a piece-wise linear function.

[0240] 2.5. Transform Skip (TS)

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

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

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

[0244] 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 CBF. If either 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 signal the joint chrominance residual encoding / decoding mode to distinguish from the normal chrominance QP offset values that signal the normal chrominance residual encoding / decoding mode. These chrominance QP offset values are used to derive the chrominance QP values of the blocks encoded with the joint chrominance residual encoding / decoding mode. When the corresponding joint chrominance encoding / decoding mode (mode 2 in Table 3) is activated in a TU, this chrominance QP offset is added to the luminance-derived chrominance QP applied during quantization and decoding of that TU. For the other modes (mode 1 and mode 3 in 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 normal Cb or Cr blocks. The chrominance residual reconstruction process (resCb and resCr) from the transmitted transform blocks is shown in Table 3. When this mode is activated, 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, which is the sign value specified in the slice header.

[0245] On the encoder side, the joint chrominance components are derived as explained below. Depending on the mode (enumerated in the table above), resJointC{1,2} is generated by the encoder as follows:

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

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

[0248] · Otherwise, if the mode is equal to 1 (single residual, reconstructed Cb = C, Cr = (CSign*C) / 2), the joint residual is determined as follows

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

[0250] · Otherwise (mode equals 3, i.e., single residual, reconstruction Cr = C, Cb = (CSign * C) / 2), the joint residual is determined as follows

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

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

[0253]

[0254] Different QPs are used in the above three modes. For mode 2, the QP offset signaled for the JCCR coded block in the PPS is applied, while for the other two modes, it is not applied. Instead, the QP offset signaled for the non-JCCR coded block in the PPS is applied.

[0255] The corresponding explanations are as follows:

[0256] 8.7.1 Quantization Parameter Derivation Process

[0257] Variable Qp Y Is derived as follows:

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

[0259] Luminance quantization parameter Qp' Y Is derived as follows:

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

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

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

[0263] – variable qP Cb , qP Cr and qP CbCr is derived as follows:

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

[0265] (8 - 935)

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

[0267] (8 - 936)

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

[0269] (8 - 937)

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

[0271] (8 - 938)

[0272] – the chroma quantization parameters, Qp′, of the Cb and Cr components Cb and Qp′ Cr , and the joint Cb - Cr coding / decoding Qp′ CbCr is derived as follows:

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

[0274] + QpBdOffset C (8 - 939)

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

[0276] +QpBdOffset C (8 - 940)

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

[0278] +QpBdOffset C (8 - 941)

[0279] 8.7.3 Scaling Process of Transform Coefficients

[0280] The inputs to this process are:

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

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

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

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

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

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

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

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

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

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

[0291] qP = Max(QpPrimeTsMin, Qp′ Y )

[0292] (8 - 951)

[0293] – Otherwise, if TuCResMode[xTbY][yTbY] equals 2, then the following is used:

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

[0295] – Otherwise, if cIdx equals 1, then the following is used:

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

[0297] – Otherwise (cIdx equals 2), then the following is used:

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

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

[0300] Figure 14A Illustrates the arrangement of CC - ALF with respect to other loop filtering. CC - ALF operates by applying linear, diamond filtering ( Figure 14B ) to the luminance channels of each chrominance component, which is expressed as follows

[0301] where

[0302] (x, y) is the position of chrominance component i being refined

[0303] (x C , y C ) is the luminance position based on (x, y)

[0304] S i is the filtering support in the luminance of chrominance component i

[0305] c i (x 0 , y 0 ) represents the filtering coefficient

[0306] The key characteristic features of the CC - ALF process include:

[0307] - The luminance position (x C , y C )(with the support region centered around it) is calculated based on the spatial scaling factor between the luminance and chrominance planes.

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

[0309] – The APS can be referenced in the strip header.

[0310] – The CC-ALF coefficients for each chrominance component of the strip are also stored in a buffer corresponding to the temporal sublayer. The reuse of these sets of temporal sublayer filter coefficients is facilitated by using a strip-level flag.

[0311] - The application of CC-ALF filtering is controlled on a variable block size and signaled by flags context decoded for each block of samples. The block size and CC-ALF enable flag are received at the strip level for each chrominance component.

[0312] - The boundary filling of horizontal virtual boundaries uses replication. For the remaining boundaries, the same type of filling as for conventional ALF is used.

[0313] 3. Defects of Existing Implementations

[0314] DMVR and BIO do not involve the original signaling during the refinement of motion vectors, which may result in decoded blocks with inaccurate motion information. In addition, DMVR and BIO sometimes adopt fractional motion vectors after motion refinement, while screen video usually has integer motion vectors, which makes the current motion information more inaccurate and degrades the decoding performance.

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

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

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

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

[0319] 5. In chrominance edge determination, Qp Q and Qp P are set to be equal to the Qp of the coding unit that contains the coded blocks containing samples q 0,0 and p 0,0 respectively. YValue. However, during the quantization / dequantization process, the QP of the chroma samples is derived from the QP of the luminance block of the corresponding luminance samples covering the central position of the current chroma CU. When the binary tree is enabled, different positions of the luminance block may result in different QPs. Therefore, during the chroma deblocking process, incorrect QPs may be used for filtering decisions. Such mismatches may result in visual artifacts. Examples are shown in Figure 9A - Figure 9B and include Figure 9A and Figure 9B . In Figure 9A - Figure 9B , Figure 9A is the corresponding CTB partition of the luminance block, and Figure 9B is the chroma CTB partition under the binary tree. When determining the QP of the chroma block (referred to by CU c 1), the central position of CU c 1 is first derived. Then, the corresponding luminance samples at the central position of CU c 1 are identified, and the luminance QP associated with the luminance CU covering the corresponding luminance samples, i.e., CU Y 3, is then used to derive the QP of CU c 1. However, when making filtering decisions for the three illustrated samples (circled in solid lines), the QP of the CU covering the corresponding 3 samples is selected. Therefore, for the first, second, and third chroma samples (shown in Figure 9B ), the QPs of CU Y 2, CU Y 3, and CU Y 4 are used, respectively. That is, chroma samples in the same CU may use different QPs for filtering decisions, which may lead to incorrect decisions.

[0320] 6. Different picture-level QP offsets (i.e., pps_joint_cbcr_qp_offset) are applied to JCCR codec blocks, which are different from the picture-level offsets for Cb / Cr applied to non-JCCR codec blocks (e.g., pps_cb_qp_offset and pps_cr_qp_offset). However, during the chroma deblocking filtering decision process, only those offsets for non-JCCR codec blocks are used. Missing consideration of the coding mode may result in incorrect filtering decisions.

[0321] 7. TS and non-TS codec blocks use different QPs during the dequantization process, which can also be considered during the deblocking process.

[0322] 8. Different QPs are used during the scaling process (quantization / dequantization) for JCCR codec blocks with different modes. Such design inconsistencies.

[0323] 9. The chroma deblocking of Cb / Cr can be unified for parallel designs.

[0324] 4. Exemplary Technologies and Embodiments

[0325] The detailed embodiments described below should be regarded as examples to explain the general concept. These embodiments should not be understood in a narrow sense. Additionally, these embodiments can be combined in any way.

[0326] The methods described below can also be applicable to other decoder motion information derivation techniques in addition to the DMVR and BIO mentioned below.

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

[0328] Regarding the Chroma QP in Deblocking

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

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

[0331] b. Alternatively, the chrominance QP offset can not be regarded as an input to the chrominance QP table.

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

[0333] 2. QP clipping may not be applied to the input of the chrominance QP table.

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

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

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

[0337] c. In one example, the chrominance deblocking parameter may depend on the chrominance QP table value, using QpQ as the table index, where QpQ is the luma QP value on the Q side.

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

[0339] a. In one example, the QP of the deblocking process may be equal to the QP in dequantization.

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

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

[0342] b. In one example, the filter process (e.g., chrominance edge decision process) that requires using the quantization parameter of the chrominance block may depend on whether the block uses JCCR.

[0343] i. Alternatively, additionally, the picture / strip level QP offset (e.g., pps_joint_cbcr_qp_offset) applied to the JCCR coded / decoded block can also be taken into account in the deblocking filter process.

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

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

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

[0347] 6. The chrominance filter process (e.g., chrominance edge decision process) that requires accessing the decoding information of the luma block can use the information associated with the same luma coded / decoded block that is used to derive the chrominance QP in the dequantization / quantization process.

[0348] a. In one example, the chrominance filter process (e.g., chrominance edge decision process) that requires using the quantization parameter of the luma block can use the luma coded / decoding unit of the corresponding luma sample covering the central position of the current chrominance CU.

[0349] b. Figure 9A - Figure 9B Examples are illustrated in which the decoded information of CU Y 3 can be used for Figure 9B the filtering decision of three chrominance samples (first, second, and third) in

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

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

[0352] b. Alternatively, additionally, the QP of the scaling process for the chrominance block can already take into account the chrominance CU - level QP offset.

[0353] 8. Whether to call the above items can depend on whether the sample to be filtered is in a block on the P - side or the Q - side.

[0354] a. For example, whether to use the corresponding luma sample covering the current chrominance sample or the information of the luma coding / decoding block of the corresponding luma sample covering the central position of the chrominance coding / decoding block covering the current chrominance sample can depend on the block position.

[0355] i. In one example, if the current chrominance sample is in a block on the Q - side

[0356] then the QP information of the luma coding / decoding block of the corresponding luma sample covering the central position of the chrominance coding / decoding block covering the current chrominance sample can be used.

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

[0358] Regarding QP Setting

[0359] 9. It is proposed to signal an indication (e.g., slice_cu_chroma_qp_offset_enabled_flag) enabling block - level chrominance QP offset at the strip / slice / tile / sub - picture level.

[0360] a. Alternatively, the signaling of such an indication can be signaled conditionally.

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

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

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

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

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

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

[0367] 10. The same QP derivation method is used for the scaling process (quantization / dequantization) of JCCR codec blocks with different modes.

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

[0369] Filtering Process

[0370] 11. Deblocking of all color components except the first color component can be after the deblocking process of the first color component.

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

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

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

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

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

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

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

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

[0379] c. In one example, if the samples on the P side are lossless coded / decoded and the samples on the Q side are lossy coded / decoded, the gradient used in the deblocking on / off decision and / or the strong filtering on / off decision may only include the gradient of the samples on the Q side, and vice versa.

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

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

[0382] a. The video content (e.g., screen content or natural content)

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

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

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

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

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

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

[0389] h. The coding tree structure (such as a binary tree or a unary tree)

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

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

[0392] k. Temporal layer ID

[0393] l. Standard profile / level / tier

[0394] m. Alternatively, N can be signaled to the decoder Regarding Boundary Strength Derivation

[0395] 13. It is proposed to treat the JCCR-coded blocks as those non-JCCR-coded blocks in the boundary strength determination process.

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

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

[0398] 14. It is proposed to derive the boundary strength (BS) without comparing the reference picture and / or multiple MVs associated with the block on the P side and the reference picture of the block on the Q side.

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

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

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

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

[0403] e. In one example, the difference between the motion vectors of two blocks being 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)

[0404] i. Alternatively, a difference between 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

[0405] ii. Alternatively, in one example, a difference between 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

[0406] iii. Alternatively, in one example, a difference between 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

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

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

[0409] h. In the above examples, Th can depend on

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

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

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

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

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

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

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

[0417] viii. Coding tree structure (such as binary tree or unary tree)

[0418] ix. Slice / tile type and / or picture type

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

[0420] xi. Temporal layer ID

[0421] xii. Standard profile / level / tier

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

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

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

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

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

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

[0428] Regarding Luma Deblocking Filtering Process

[0429] 15. Deblocking can use different QPs for TS-coded blocks and non-TS-coded blocks.

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

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

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

[0433] 17. It is proposed to use the same gradient calculation for large block boundaries and small block boundaries.

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

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

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

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

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

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

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

[0441] a. video content (such as screen content or natural content)

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

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

[0444] d. the coding mode of the block containing samples along the edge

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

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

[0447] g. the block shape of the current block and / or its neighboring blocks

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

[0449] i. coding tree structure (such as binary tree or unary tree)

[0450] j. Strip / group type and / or picture type

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

[0452] l. Temporal layer ID

[0453] m. Standard profile / level / tier. Alternatively, beta can be signaled to the decoder.

[0454] Regarding Scaling Matrix (Dequantization Matrix)

[0455] 18. The value of the specific position of the quantization matrix can be set to a constant.

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

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

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

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

[0460] 19. Constraints can be set such that the average / weighted average of some positions of the quantization matrix can be a constant.

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

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

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

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

[0465] 21. CCALF can be applied at the decoder before some loop filtering processes

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

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

[0468] c. In one example, CCALF can be applied before ALF on the decoder side.

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

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

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

[0472] e. Alternatively, the indication of the order of different filtering (e.g., CCALF, ALF, SAO, deblocking filtering) can be signaled or derived in real time.

[0473] i. Alternatively, the indication of the invocation of CCALF can be signaled or derived in real time.

[0474] f. How to control the explicit (e.g., signaled from the encoder to the decoder) or implicit (e.g., derived at both the encoder and the decoder) indication of CCALF can be decoupled for different color components (such as Cb and Cr).

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

[0476] Regarding Chroma QP Offset List

[0477] 22. 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.

[0478] h. The chrominance QP offset list (e.g., cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i]) can be different for different coding / decoding modes.

[0479] 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 the intra mode.

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

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

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

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

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

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

[0486] Regarding Chroma Deblocking at CTU Boundary

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

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

[0489] 25. For the edges at the CTU boundary, deblocking may be based on the luma QP of the corresponding block.

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

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

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

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

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

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

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

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

[0498] t. In this project, "CTU boundary" may refer to a specific CTU boundary, such as the upper CTU boundary or the lower CTU boundary.

[0499] 26. For the horizontal edges at the CTU boundary, deblocking may be based on a function of the chrominance QP on the P side.

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

[0501] i. In one example, the function may be the average of the chrominance QP based on every 8 luminance samples.

[0502] ii. In one example, the function may be the average of the chrominance QP based on every 16 luminance samples.

[0503] iii. In one example, the function may be the average of the chrominance QP based on every 32 luminance samples.

[0504] iv. In one example, the function may be the average of the chrominance QP based on every 64 luminance samples.

[0505] v. In one example, the function may be the average of the chrominance QP based on each CTU.

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

[0507] i. In one example, the function may be the maximum of the chrominance QP based on every 8 luminance samples.

[0508] ii. In one example, the function may be the maximum of the chrominance QP based on every 16 luminance samples.

[0509] iii. In one example, the function may be the maximum of the chrominance QP based on every 32 luminance samples.

[0510] iv. In one example, the function may be the maximum of the chrominance QP based on every 64 luminance samples.

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

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

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

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

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

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

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

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

[0519] i. In one example, the function can be the chrominance QP based on the k-th chrominance sample among every 8 luma samples.

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

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

[0522] 3. In one example, the k-th sample can be the third sample.

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

[0524] ii. In one example, the function can be the chrominance QP based on the k-th chrominance sample among every 16 luma samples.

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

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

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

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

[0529] iii. In one example, the function may be the chrominance QP based on the k-th chrominance sample among every 32 luminance samples.

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

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

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

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

[0534] iv. In one example, the function may be the chrominance QP based on the k-th chrominance sample among every 64 luminance samples.

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

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

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

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

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

[0540] y. Alternatively, the above items may be applied to the chrominance

[0541] QP on the Q side for the deblocking process.

[0542] 27. It may be constrained that the QP of the chrominance component may be the same as that of a chrominance row segment with a length of 4*m starting from (4*m*x, 2y) relative to the top left of the picture, where x and y are non-negative integers; and m is a positive integer.

[0543] z. In one example, m may be equal to 1.

[0544] aa. In one example, the width of the quantization group of the chrominance component must not be less than

[0545] 4*m.

[0546] 28. It may be constrained that the QP of the chrominance component may be the same as that of a chrominance column segment with a length of 4*n starting from (2*x, 4*n*y) relative to the top left of the picture, where x and y are non-negative integers; and n is a positive integer.

[0547] bb. In one example, n may be equal to 1.

[0548] cc. In one example, the height of the quantization group of the chrominance component must be no less than 4*n.

[0549] Regarding Chroma Deblocking Filtering Process

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

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

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

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

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

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

[0556] Regarding Chroma Deblocking Filtering Process

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

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

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

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

[0561] i. In one example, the average of the gradients of the Cb and Cr components may be used in the above decisions for both the Cb and Cr components.

[0562] ii. In one example, chrominance strong filtering may be performed only when both the Cb and Cr components satisfy the strong filtering conditions.

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

[0564] Overview

[0565] 31. The methods proposed above can be applied under certain conditions.

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

[0567] i. Alternatively, additionally, for the 4:4:4 color format, how to apply deblocking filtering to the dual-color chroma components may follow the current design.

[0568] b. In one example, the indication of the use of the above method may be signaled at the sequence / picture / strip / slice / tile / video region level (such as SPS / PPS / picture header / strip header).

[0569] c. In one example, the use of the above method may depend on

[0570] ii. Video content (such as screen content or natural content)

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

[0572] iv. The position of the CU / PU / TU / block / video coding unit

[0573] a. In one example, for the filtered samples along the CTU / CTB boundary (e.g., the first K (e.g., K = 4 / 8) before the top / left / right / bottom boundary), the existing design may be applied. For other samples, the proposed method (e.g., item 3 / 4) may be applied alternatively.

[0574] v. The coding mode of the block containing samples along the edge

[0575] vi. The transform matrix applied to the block containing samples along the edge

[0576] vii. The block dimension of the current block and / or its neighboring blocks

[0577] viii. The block shape of the current block and / or its neighboring blocks

[0578] ix. The indication of the color format (such as 4:2:0, 4:4:4, RGB or YUV)

[0579] x. Coding and decoding tree structures (such as binary trees or unary trees)

[0580] xi. Slice / tile type and / or picture type

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

[0582] xiii. Temporal layer ID

[0583] xiv. Standard profile / level / tier

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

[0585] 5. Additional embodiments

[0586] Newly added text is shown as underlined bold italic. Deleted text is marked as [[ ]].[[]]

[0587] 5.1. Embodiment #1 on the chrominance QP in deblocking

[0588] 8.8.3.6 Edge filtering process in one direction

[0589] …

[0590] – Otherwise (cIdx is not equal to 0), the edge filtering process in the chrominance coding and decoding block of the current coding and decoding unit specified by cIdx consists of the following sequential steps:

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

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

[0593] 8.8.3.6.3 Decision process for chrominance block edges

[0594] …

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

[0596] Variable Qp C is derived as follows:

[0597] [[qPi = Clip3(0, 63, ((Qp Q + QpP +1)>>1)+cQpPicOffset)

[0598] (8 - 1132)

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

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

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

[0602] Note – Depending on whether the chrominance component being filtered is the Cb or Cr component, the variable cQpPicOffset provides an adjustment to the value of pps_cb_qp_offset or pps_cr_qp_offset. However, to avoid the need to change the amount of adjustment within the picture, the filtering process does not include an adjustment to the value of slice_cb_qp_offset or slice_cr_qp_offset or (when cu_chroma_qp_offset_enabled_flag is equal to 1) to the value of CuQpOffset Cb , CuQpOffset Cr , or CuQpOffset CbCr value of.

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

[0604] Q = Clip3(0, 63, Qp C +(slice_beta_offset_div2 << 1))

[0605] (8 - 1134)

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

[0607] The variable β is derived as follows:

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

[0609] (8-1135)

[0610] Determine the variable t based on the chrominance quantization parameter Q as specified in Table 8-18 C ′, and the chrominance quantization parameter Q is derived as follows:

[0611] Q = Clip3(0, 65,

[0612] Qp C + 2*(bS - 1)+(slice_tc_offset_div2 << 1))(8-1136)

[0613] 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 of the slice.

[0614] The variable t C is derived as follows:

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

[0616] 5.2. Example #2 for deriving boundary strength

[0617] 8.8.3.5 Derivation process of boundary filtering strength

[0618] The inputs to this process are:

[0619] – The picture sample array recPicture,

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

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

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

[0623] – The variable edgeType specifying whether it is a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge for filtering,

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

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

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

[0627] …

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

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

[0630] – Otherwise, the following applies:

[0631] …

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

[0633] – If cIdx is equal to 0 and the samples p 0 and q 0 are from a coding block where intra_bdpcm_flag is equal to 1, then bS[xD i [yD j is set to be equal to 0.

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

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

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

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

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

[0639] – 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:

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

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

[0642] – For predicting the coding / decoding sub-block containing sample p 0 , a different reference picture or a different number of motion vectors is used than for predicting the coding / decoding sub-block containing sample q 0 .

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

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

[0645] – One motion vector is used to predict the coding / decoding block containing sample p0, and one motion vector is used to predict the coding / decoding block containing sample q0, and the absolute difference between the horizontal or vertical components of the motion vectors used is greater than or equal to 8 in units of 1 / 16 luma samples.

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

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

[0648] – The absolute difference between the horizontal or vertical components of the list 0 motion vectors used in predicting the two coding / decoding blocks is greater than or equal to 8 in units of 1 / 16 luma samples, or the absolute difference between the horizontal or vertical components of the list 1 motion vectors used in predicting the two coding / decoding blocks is greater than or equal to 8 in units of 1 / 16 luma samples.

[0649] – The absolute difference between the horizontal or vertical components of the list 0 motion vector used in predicting the coding / decoding block containing sample p0 and the list 1 motion vector used in predicting the coding / decoding block containing sample q0 is greater than or equal to 8 in units of 1 / 16 luma samples, or the absolute difference between the horizontal or vertical components of the list 1 motion vector used in predicting the coding / decoding block containing sample p0 and the list 0 motion vector used in predicting the coding / decoding block containing sample q0 is greater than or equal to 8 in units of 1 / 16 luma samples]]

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

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

[0652] 8.8.3.5 Process for deriving boundary filter strength

[0653] The inputs to this process are:

[0654] – Picture sample array recPicture,

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

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

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

[0658] – Variable edgeType, specifying whether the filtering is for vertical (EDGE_VER) or horizontal (EDGE_HOR) edges,

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

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

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

[0662] …

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

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

[0665] – Otherwise, the following applies:

[0666] …

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

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

[0669] – Otherwise, if sample p 0 or q0 In the coding / decoding block of a coding / decoding unit coded / decoded in an intra prediction mode, bS[xD i [yD j is set to be equal to 2.

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

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

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

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

[0674] – 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:

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

[0676] – Use different reference pictures or a different number of motion vectors for predicting the coding / decoding sub-block containing sample p0 than for predicting the coding / decoding sub-block containing sample q0.

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

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

[0679] – One motion vector is used for predicting the coding / decoding sub-block containing sample p0, and one motion vector is used for predicting the coding / decoding sub-block containing sample q0, and the absolute difference between the horizontal or vertical components of the motion vectors used is greater than or equal to 8 in units of 1 / 16 luma samples.

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

[0681] – Two motion vectors of the same reference picture are used for predicting the coding / decoding sub-block containing sample p0, two motion vectors of the same reference picture are used for predicting the coding / decoding sub-block containing sample q0, and all of the following conditions are true:

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

[0683] – The absolute difference between the horizontal or vertical components of the list 0 motion vector used in predicting the coding / decoding sub-block containing sample p0 and the list 1 motion vector used in predicting the coding / decoding sub-block containing sample q0 is greater than or equal to 8 in units of 1 / 16 luma samples, or the absolute difference between the horizontal or vertical components of the list 1 motion vector used in predicting the coding / decoding sub-block containing sample p0 and the list 0 motion vector used in predicting the coding / decoding sub-block containing sample q0 is greater than or equal to 8 in units of 1 / 16 luma samples.

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

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

[0686] 8.8.3.6.1 Decision Process for the Luminance Block Edge

[0687] The inputs to this process are:

[0688] – The picture sample array recPicture,

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

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

[0691] – The variable edgeType, specifying whether the filter is a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge,

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

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

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

[0695] The outputs of this process are:

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

[0697] – The modified filter length variables maxFilterLengthP and

[0698] maxFilterLengthQ,

[0699] – The variable t C .

[0700] …

[0701] For the following sequential steps: ..。

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

[0703] a. The variables dp0L and dp3L are derived, and maxFilterLengthP is modified as follows:

[0704] – If sidePisLargeBlk equals 1, then the following is used:

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

[0706] (8 - 1087)

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

[0708] (8 - 1088)

[0709] – Otherwise, the following applies:

[0710] dp0L = dp0 (8 - 1089)

[0711] dp3L = dp3 (8 - 1090)

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

[0713] maxFilterLengthP = sidePisLargeBlk? maxFilterLengthP : 3

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

[0716] – If sideQisLargeBlk equals 1, then the following is used:

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

[0718] (8 - 1092)

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

[0720] (8 - 1093)

[0721] – Otherwise, the following applies:

[0722] dq0L = dq0 (8 - 1094)

[0723] dq3L = dq3 (8 - 1095)

[0724] maxFilterLengthQ = sidePisLargeBlk?

[0725] maxFilterLengthQ: 3

[0726] …

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

[0728] …

[0729] 5.5. Example #5 regarding the chroma deblocking filtering process

[0730] 8.8.3.6.3 Decision process for chroma block edges

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

[0732] The inputs to this process are:

[0733] – The chroma picture sample array recPicture,

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

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

[0736] – The variable edgeType, specifying whether it is a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge for filtering,

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

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

[0739] – The variable bS, specifying the boundary filtering strength,

[0740] – The variable maxFilterLengthCbCr.

[0741] The output of this process is

[0742] – The modified variable maxFilterLengthCbCr,

[0743] – The variable t C 。

[0744] The variable maxK is derived as follows:

[0745] – If edgeType is equal to EDGE_VER, the following is used:

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

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

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

[0749] The values pi and qi, where i = 0..maxFilterLengthCbCr and k = 0..maxK, are derived as follows:

[0750] – If edgeType is equal to EDGE_VER, the following is used::

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

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

[0753] subSampleC = SubHeightC (8 - 1128)

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

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

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

[0757] subSampleC = SubWidthC (8 - 1131)

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

[0759] - 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 coding / decoding unit covering the luma position (xCb + cbWidth / 2, yCb + cbHeight / 2) Y .

[0760] - The variables qP Cb , qP Cr and qP CbCr are derived as follows:

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

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

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

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

[0765] - The chroma quantization parameters for the Cb and Cr components, Qp′ Cb and Qp′ Cr , and the joint Cb - Cr coding Qp′ CbCr are derived as follows:

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

[0767] (8 - 939)

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

[0769] (8 - 940)

[0770] Qp' CbCr = Clip3(-QpBdOffset C , 63, qP CbCr + pps_cbcr_qp_offset + slice_cbcr_qp_offset + CuQpOffset CbCr )

[0771] (8 - 941)

[0772] The variable Qp Q and Qp P are set to be equal to the corresponding Qp' 0,0 and p 0,0 of the codec unit containing the coded - decoded blocks respectively containing the samples q Cb or Qp' Cr or Qp' CbCr value.

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

[0774] Qp C = (Qp Q + Qp P + 1) >> 1 (8 - 1133)

[0776] As specified in Table t - 18, the value of the variable β' is determined based on the quantization parameter Q, and the quantization parameter Q is derived as follows:

[0777] Q = Clip3(0, 63, Qp C + (slice_beta_offset_div2 << 1))

[0778] (8 - 1134)

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

[0780] The variable β is derived as follows:

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

[0782] Determine the value of variable t′ based on the chroma quantization parameter Q as specified in Table 8 - 18. The chroma quantization parameter Q is derived as follows: C ′, and the chroma quantization parameter Q is derived as follows:

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

[0784] 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 of the slice.

[0785] Variable t C is derived as follows:

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

[0787] t C ′ * (1 << (BitDepth C - 8)) (8 - 1137)

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

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

[0790] 8.8.3.6.3 Decision process for chroma block edges

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

[0792] The inputs to this process are:

[0793] – The chroma picture sample array recPicture,

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

[0795] – Chrominance position (xBl, yBl), specifying the top-left sample point of the current chrominance block relative to the top-left sample point of the current chrominance coding block.

[0796] – Variable edgeType, specifying whether the filter is vertical (EDGE_VER) or horizontal

[0797] (EDGE_HOR) edge.

[0798] – Variable cIdx, specifying the color component index.

[0799] – Variable cQpPicOffset, specifying the picture-level chrominance quantization parameter offset.

[0800] – Variable bS, specifying the boundary filter strength.

[0801] – Variable maxFilterLengthCbCr.

[0802] The output of this process is

[0803] – The modified variable maxFilterLengthCbCr.

[0804] – Variable t C .

[0805] The variable maxK is derived as follows:

[0806] – If edgeType is equal to EDGE_VER, the following is used:

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

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

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

[0810] The values pi and qi, where i = 0..maxFilterLengthCbCr and k = 0..maxK, are derived as follows:

[0811] – If edgeType is equal to EDGE_VER, the following is used::

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

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

[0814] subSampleC = SubHeightC (8 - 1128)

[0815] - Otherwise (edgeType equals EDGE_HOR), the following applies:

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

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

[0818] subSampleC = SubWidthC(8 - 1131)

[0819] The variables Qp Q and Qp P are set equal to the Qp 0,0 value of the coding / decoding unit of the coding / decoding block containing the samples q 0,0 and p Y respectively.

[0820] The variables jccr_flag P and jccr_flag Q are set equal to the tu_joint_cbcr_residual_flag value of the coding / decoding unit of the coding / decoding block containing the samples q 0,0 and p 0,0 respectively.

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

[0822] [[qPi = Clip3(0, 63, ((Qp Q + Qp P + 1) >> 1) + cQpPicOffset)

[0823] (8 - 1132)]]]

[0824] qPi = Clip3(0, 63, ((Qp Q + (jccr_flag P ? pps_joint_cbcr_qp_offset : cQpPicOffset) + Qp P + (jccr_flagQ ? pps_joint_cbcr_qp_offset:cQpPicOffset)+1)>>1))

[0825] Q C =ChromaQpTable[cIdx-1][qPi] (8-1133)

[0826] NOTE – The variable cQpPicOffset provides an adjustment to the value of pps_cb_qp_offset or pps_cr_qp_offset, depending on whether the chroma component being filtered is a Cb or Cr component. However, to avoid the need to change the amount of adjustment within the picture, the filtering process does not include an adjustment to the value of slice_cb_qp_offset or slice_cr_qp_offset, nor does it include (when cu_chroma_qp_offset_enabled_flag is equal to 1) an adjustment to CuQpOffset Cb 、CuQpOffset Cr or CuQpOffset CbCr Adjustment of the value.

[0827] …

[0828] 5.7. Example #7 on Chroma QP in Deblocking

[0829] 8.8.3.6.3 Chroma block edge determination process

[0830] This procedure is called only if ChromaArrayType is not equal to 0.

[0831] The inputs to this process are:

[0832] – Chroma picture sample array recPicture,

[0833] – Chroma position (xCb, yCb), specifies the top left sample of the current chroma codec block relative to the top left chroma sample of the current picture,

[0834] –…

[0835] The output of this process is

[0836] – Modified variable maxFilterLengthCbCr,

[0837] – Variable t C .

[0838] The variable maxK is derived as follows:

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

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

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

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

[0843] The values pi and qi, where i = 0..maxFilterLengthCbCr and k = 0..maxK, are derived as follows:

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

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

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

[0847] subSampleC = SubHeightC (8 - 1128)

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

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

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

[0851] subSampleC = SubWidthC (8 - 1131)

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

[0853] Variable QpQ The luma quantization parameter Qp of the luma coding / decoding unit that is set to be equal to the covered luma position (xCb + cbWidth / 2, yCb + cbHeight / 2) Y, where cbWidth specifies the width of the current chroma coding / decoding block in luma samples, and cbHeight specifies the height of the current chroma coding / decoding block in luma samples.

[0854] Variable Qp P is set to be equal to the luma quantization parameter Qp of the luma coding / decoding unit that covers the luma position (xCb'+ cbWidth' / 2, yCb'+ cbHeight' / 2) Y , where (xCb', yCb') is the top-left sample of the covered chroma coding / decoding block of q 0,0 with respect to the top-left chroma sample of the current picture, cbWidth' specifies the width of the current chroma coding / decoding block in luma samples, and cbHeight specifies the height of the current chroma coding / decoding block in luma samples.

[0855] Variable Qp C is derived as follows:

[0856] qPi = Clip3(0, 63, ((Qp Q + Qp P + 1) >> 1) + cQpPicOffset)

[0857] (8 - 1132)

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

[0859] Note – Depending on whether the filtered chroma component is the Cb or Cr component, the variable cQpPicOffset provides an adjustment of the value of pps_cb_qp_offset or pps_cr_qp_offset. However, to avoid the need to change the amount of adjustment within the picture, the filtering process does not include an adjustment of the value of slice_cb_qp_offset or slice_cr_qp_offset, nor does it include (when cu_chroma_qp_offset_enabled_flag is equal to 1) an adjustment of the value of CuQpOffset Cb 、CuQpOffset Cr or CuQpOffset CbCr value adjustments.

[0860] Determine the value of variable β' based on the quantization parameter Q as specified in Table 8 - 18, and the quantization parameter Q is derived as follows:

[0861] Q = Clip3(0, 63, Qp C +(slice_beta_offset_div2 << 1))

[0862] (8 - 1134)

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

[0864] The variable β is derived as follows:

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

[0866] (8 - 1135)

[0867] As specified in Table 8 - 18, determine the value of the variable t C ' based on the chrominance quantization parameter Q. The chrominance quantization parameter Q is derived as follows:

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

[0869] 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 of the strip.

[0870] 5.8. Example #8 Regarding Chrominance QP in Deblocking

[0871] When making the filtering decision for the three samples (marked with solid circles), select the QP of the luma CU that covers the central position of the chrominance CU containing the three samples. Therefore, for the first, second, and third chrominance samples ( Figure 11 as shown in), only use the QP of CU Y 3 respectively.

[0872] In this way, the selection of the luma CU for the chrominance quantization / de - quantization process is consistent with the chrominance filtering decision process.

[0873] 5.9. Example #9 Regarding QP for JCCR Coding / Decoding Blocks

[0874] 8.7.3 Scaling Process of Transform Coefficients

[0875] The input to this process is:

[0876] – Luminance position (xTbY, yTbY), which specifies the top-left sample of the current luminance transform block relative to the top-left luminance sample of the current picture.

[0877] – Variable nTbW, which specifies the transform block width.

[0878] – Variable nTbH, which specifies the transform block height.

[0879] – Variable cIdx, which specifies the color component of the current block.

[0880] – Variable bitDepth, which specifies the bit depth of the current color component.

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

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

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

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

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

[0886] qP = Max(QpPrimeTsMin, Qp′ Y )

[0887] (8 - 951)

[0888] – Otherwise, if TuCResMode[xTbY][yTbY] is not equal to 0 [[equal to 2]], then the following is used:

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

[0890] – Otherwise, if cIdx is equal to 1, then the following is used:

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

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

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

[0894] 5.10 Example #10 for QP of JCCR Coding / Decoding Blocks

[0895] 8.8.3.2 Deblocking Filtering Process for One Direction

[0896] The inputs to this process are:

[0897] – The variable treeType, which specifies whether the luma (DUAL_TREE_LUMA) or chroma component (DUAL_TREE_CHROMA) is currently being processed

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

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

[0900] – The variable edgeType, which specifies whether the filtering is for a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge

[0901] The output of this process is the reconstructed picture modified after deblocking, i.e.:

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

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

[0904] The variables firstCompIdx and lastCompIdx are derived as follows:

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

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

[0907] For each coding unit and each coding block of each color component of the coding unit indicated by the color component index cIdx (ranging from firstCompIdx to lastCompIdx, inclusive), with coding block width nCbW, coding block height nCbH, and the position (xCb, yCb) of the top-left sample of the coding block, when cIdx is equal to 0, or when cIdx is not equal to 0 and edgeType is equal to EDGE_VER and xCb % 8 is equal to 0, or when cIdx is not equal to 0 and edgeType is equal to EDGE_HOR and yCb % 8 is equal to 0, the edge is filtered by the following sequential steps:

[0908] …

[0909] [[5. The picture sample array recPicture is derived as follows:

[0910] – If cIdx is equal to 0, then before deblocking recPicture L recPicture is set to be equal to the reconstructed luminance picture sample array.

[0911] – Otherwise, if cIdx is equal to 1, then before deblocking recPicture Cb recPicture is set to be equal to the reconstructed chrominance picture sample array.

[0912] – Otherwise (cIdx is equal to 2), before deblocking recPicture Cr recPicture is set to be equal to the reconstructed chrominance picture sample array]]

[0913] 5. The picture sample array recPicture[i], where i = 0, 1, 2, is derived as follows:

[0914] – Before deblocking recPictureL, recPicture[0] is set to be equal to the reconstructed picture sample array.

[0915] – Before deblocking recPictureCb, recPicture[1] is set to be equal to the reconstructed picture sample array.

[0916] – Before deblocking recPictureCr, recPicture[2] is set to be equal to the reconstructed picture sample array

[0917] …

[0918] If cIdx is equal to 1, then the following process is applied:

[0919] Call the edge filtering process in one direction specified in Clause 8.8.3.6 on the coded block, with the variables edgeType, variable cIdx, the reconstructed picture before deblocking recPicture, the position (xCb, yCb), the coded block width nCbW, the coded block height nCbH, and the arrays bS, maxFilterLengthPs, and maxFilterLengthQs as inputs, and the modified reconstructed picture recPicture as the output.

[0920] 8.8.3.5 Derivation process of boundary filtering strength

[0921] The inputs to this process are:

[0922] – The picture sample array recPicture,

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

[0924] – The variable nCbW, specifying the width of the current coded block,

[0925] – The variable nCbH, specifying the height of the current coded block,

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

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

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

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

[0930] Variable xD i , yD j , xN and yN are derived as follows:

[0931] …

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

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

[0934] – Otherwise, the following applies:

[0935] – Sample values p 0 and q 0 are derived as follows:

[0936] – If edgeType is equal to EDGE_VER, then p 0 is set to be equal to recPicture[cIdx][xCb + xD i -1][yCb + yD j and q 0 is set to be equal to recPicture[cIdx][xCb + xD i [yCb + yD j .

[0937] – Otherwise (edgeType is equal to EDGE_HOR), p 0 is set to be equal to recPicture[cIdx][xCb + xD i [yCb + yD j -1], and q 0 is set to be equal to recPicture[cIdx][xCb + xD i [yCb + yD j . ..

[0938] 8.8.3.6 Edge filtering process for one direction

[0939] The inputs to this process are:

[0940] – The variable edgeType, which specifies whether the current process is for a vertical edge (EDGE_VER) or a horizontal edge (EDGE_HOR),

[0941] – The variable cIdx, which specifies the current color component,

[0942] – The reconstructed picture before deblocking recPicture,

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

[0944] – The variable nCbW, which specifies the width of the current coding / decoding block,

[0945] – The variable nCbH, which specifies the height of the current coding / decoding block,

[0946] – The array bS, which specifies the boundary strength,

[0947] – array maxFilterLengthPs and maxFilterLengthQs.

[0948] The output of this process is the modified reconstructed picture after deblocking recPicture i .

[0949] …

[0950] – Otherwise (cIdx is not equal to 0), the filtering process of the edges in the chrominance coding block of the current coding unit specified by cIdx consists of the following sequential steps:

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

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

[0953] cQpPicOffset = (pps_cb_qp_offset + pps_cr_qp_offset + 1) >> 1 (8-1065)

[0954] 2. If bS[xDk][yDm] is equal to 1 for cIdx = 1 or bS[xDk][yDm] is equal to 1 for cIdx = 2, then bS[xDk][yDm] is modified to 1 for cIdx = 1 and 2.

[0955] 3. Call the edge decision process specified in Clause 8.8.3.6.3 with the chrominance picture sample array recPicture, the position (xCb, yCb) of the chrominance coding block, the position (xBl, yBl) of the chrominance block set to be equal to (xD k , yD m ), the edge direction edgeType, the variable cQpPicOffset, the boundary filtering strength bS[xD k [yD m and the variable maxFilterLengthCbCr set to be equal to maxFilterLengthPs[xD k [yD m as inputs, and the modified variable maxFilterLengthCbCr and the variable t C as outputs.

[0956] 4. When maxFilterLengthCbCr is greater than 0, call the filtering process for the chroma block edge as specified in Clause 8.8.3.6.4, with the chroma picture sample array recPicture, the position (xCb, yCb) of the chroma coding / decoding block, the chroma position (xBl, yBl) of the block set to be equal to (xD k , yD m ), the edge direction edgeType, the variable maxFilterLengthCbCr, and cIdx equal to 1 as inputs, and the variable t C as an input, and the modified chroma picture sample array recPicture as the output.

[0957] When maxFilterLengthCbCr is greater than 0, call the filtering process for the chroma block edge as specified in Clause 8.8.3.6.4, with the chroma picture sample array recPicture, the position (xCb, yCb) of the chroma coding / decoding block, the chroma position (xBl, yBl) of the block set to be equal to (xDk, yDm), the edge direction edgeType, the variable maxFilterLengthCbCr, and cIdx equal to 2 as inputs, and the variable tC as an input, and the modified chroma picture sample array recPicture as the output.

[0958] 8.8.3.6.3 Decision Process for Chroma Block Edge

[0959] Call this process only when ChromaArrayType is not equal to 0.

[0960] The inputs to this process are:

[0961] – The chroma picture sample array recPicture,

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

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

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

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

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

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

[0968] – The variable maxFilterLengthCbCr.

[0969] The output of this process is

[0970] – The modified variable maxFilterLengthCbCr,

[0971] – The variable t C .

[0972] The variable maxK is derived as follows:

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

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

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

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

[0977] The values pi and qi, where c = 0..1, i = 0..maxFilterLengthCbCr and k = 0..maxK, are derived as follows:

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

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

[0980] p c, i,k = recPicture[c][xCb + xBl - i - 1][yCb + yBl + k]

[0981] (8 - 1127)

[0982] subSampleC = SubHeightC (8 - 1128)

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

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

[0985] p c, i,k = recPicture[c][xCb + xBl + k][yCb + yBl - i - 1]

[0986] (8 - 1130)

[0987] subSampleC = SubWidthC(8 - 1131)

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

[0989] Variable Qp C is derived as follows:

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

[0991] QpC = ChromaQpTable[cIdx - 1][qPi] + cQpPicOffset

[0992] (8 - 1133)

[0993] QpC = ((ChromaQpTable[0][qPi] + ChromaQpTable[1][qPi] + 1) >> 1) + cQpPicOffset

[0994] (8 - 1133)

[0995] Note – Depending on whether the chrominance component being filtered is the Cb or Cr component, the variable cQpPicOffset provides an adjustment of the value of pps_cb_qp_offset or pps_cr_qp_offset. However, to avoid the need to change the amount of adjustment within the picture, the filtering process does not include an adjustment of the value of slice_cb_qp_offset or slice_cr_qp_offset, nor does it include (when cu_chroma_qp_offset_enabled_flag is equal to 1) CuQpOffset Cb 、CuQpOffset Cr or CuQpOffsetCbCr Adjustment of the value

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

[0997] Q = Clip3(0, 63, Qp C +(slice_beta_offset_div2 << 1))

[0998] (8-1134)

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

[1000] The variable β is derived as follows:

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

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

[1003] Q = Clip3(0, 65,

[1004] Qp C + 2 * (bS - 1)+(slice_tc_offset_div2 << 1)) (8-1136)

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

[1006] The variable t C is derived as follows:

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

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

[1009] When maxFilterLengthCbCr is equal to 3, the steps in the following order are applied:

[1010] 1. Variables n1, dpq0c, dpq1c, dpc, dqc, and dc, where c = 0..1, are derived as follows:

[1011] n1 = (subSampleC == 2)? 1 : 3

[1012] (8 - 1138)

[1013] dp0c = Abs(pc ,2,0 - 2 * pc ,1,0 + pc ,0,0 )

[1014] (8 - 1139)

[1015] dp1c = Abs(pc ,2,n1 - 2 * pc ,1,n1 + pc ,0,n1 )

[1016] (8 - 1140)

[1017] dq0c = Abs(qc ,2,0 - 2 * qc ,1,0 + qc ,0,0 )

[1018] (8 - 1141)

[1019] dq1c = Abs(qc ,2,n1 - 2 * qc ,1,n1 + qc ,0,n1 )

[1020] (8 - 1142)

[1021] dpq0c = dp0c + dq0c (8 - 1143)

[1022] dpq1c = dp1c + dq1c (8 - 1144)

[1023] dpc = dp0c + dp1c (8 - 1145)

[1024] dqc = dq0c + dq1c (8 - 1146)

[1025] dc = dpq0c + dpq1c (8 - 1147)

[1026] 2. The variable d is set to be equal to (d0 + d1 + 1) >> 1

[1027] 3. The variables dSam0 and dSam1 are both set to be equal to 0.

[1028] 4. When d is less than β, the following steps in sequence are applied:

[1029] a. The variable dpq is set to be equal to 2 * dpq0.

[1030] b. By calling the decision process of chrominance samples as specified in Clause 8.8.3.6.8 for the sample position (xCb + xBl, yCb + yBl), with the sample values p 0,0 、p 3,0 、q 0,0 and q 3,0 、the variable dpq, β and t C as inputs, the variable dSam0 is derived and the output is assigned to determine dSam0.

[1031] c. The variable dpq is set to be equal to 2 * dpq1.

[1032] d. The variable dSam1 is modified as follows:

[1033] – If edgeType is equal to EDGE_VER, for the sample position (xCb + xBl, yCb + yBl + n1), call the decision process of chrominance samples as 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 variable dpq, β and t C as inputs, and the output is assigned to determine dSam1.

[1034] – Otherwise (edgeType is equal to EDGE_HOR), for the sample position (xCb + xBl + n1, yCb + yBl), call the decision process of chrominance samples as 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 variable dpq, β and t C as inputs, and the output is assigned to determine dSam1.

[1035] 5. The variable maxFilterLengthCbCr is modified as follows:

[1036] – If dSam0 equals 1 and dSam1 equals 1, then maxFilterLengthCbCr is set to be equal to 3.

[1037] – Otherwise, maxFilterLengthCbCr is set to be equal to 1.

[1038] 8.8.3.6.4 Filtering Process for Chroma Block Edges

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

[1040] The inputs to this process are:

[1041] – The chroma picture sample array recPicture,

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

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

[1044] – The variable edgeType, specifying whether the filter is for a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge,

[1045] – The variable maxFilterLengthCbCr, containing the maximum chroma filter length,

[1046] 6. The variable cIdx, specifying the color component index,

[1047] – The variable tC.

[1048] The output of this process is the modified chroma picture sample array recPicture.

[1049] …

[1050] The values pi and qi, where i = 0..maxFilterLengthCbCr and k = 0..maxK, are derived as follows:

[1051] – If edgeType equals EDGE_VER, then the following applies:

[1052] q i,k = recPicture[cIdx][xCb + xBl + i][yCb + yBl + k] (8-1150)

[1053] p i,k= recPicture[cIdx][xCb + xBl - i - 1][yCb + yBl + k]

[1054] (8 - 1151)

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

[1056] q i,k = recPicture[cIdx][xCb + xBl + k][yCb + yBl + i] (8 - 1152)

[1057] p i,k = recPicture[cIdx][xCb + xBl + k][yCb + yBl - i - 1]

[1058] (8 - 1153)

[1059] Depending on the value of edgeType, the following applies:

[1060] – If edgeType equals EDGE_VER, for each sample position (xCb + xBl, yCb + yBl + k), k = 0..maxK, the following steps are applied in the following order:

[1061] 1. Call the filtering process for chrominance samples as specified in Clause 8.8.3.6.9, with variables maxFilterLengthCbCr, sample values p i,k , q i,k , where i = 0..maxFilterLengthCbCr, positions (xCb + xBl - i - 1, yCb + yBl + k) and (xCb + xBl + i, yCb + yBl + k), where i = 0..maxFilterLengthCbCr – 1 and variable t C as inputs, and the filtered sample values p i ′ and q i ′, where i = 0..maxFilterLengthCbCr – 1, as outputs.

[1062] 2. The filtered sample values p i ′ and q i ′, where i = 0..maxFilterLengthCbCr – 1, replace the corresponding samples within the sample array recPicture as follows:

[1063] recPicture[cIdx][xCb + xBl + i][yCb + yBl + k] = q i ′

[1064] (8-1154)

[1065] recPicture[cIdx][xCb + xBl - i - 1][yCb + yBl + k] = p i ′

[1066] (8-1155)

[1067] – Otherwise (edgeType equals EDGE_HOR), for each sample position (xCb + xBl + k, yCb + yBl), k = 0..maxK, apply the following steps in order:

[1068] 1. Call the filtering process for chrominance samples as specified in Clause 8.8.3.6.9, with variables maxFilterLengthCbCr, sample values p i,k , q i,k , where i = 0..maxFilterLengthCbCr, positions (xCb + xBl + k, yCb + yBl - i - 1) and (xCb + xBl + k, yCb + yBl + i) and variable t C as input, and the filtered sample values p i ′ and q i ′ as output.

[1069] 2. Replace the corresponding samples in the sample array recPicture with the filtered sample values p i ′ and q i ′ as follows:

[1070] recPicture[cIdx][xCb + xBl + k][yCb + yBl + i] = q i ′

[1071] (8-1156)

[1072] recPicture[cIdx][xCb + xBl + k][yCb + yBl - i - 1] = p i ′

[1073] 5.11 Example #11

[1074] 8.8.3.6.3 Chrominance Block Edge Decision Process

[1075] …

[1076] [[Variable Qp Q and Qp P are set to be equal to the Qp of the coding / decoding unit of the coding / decoding block containing the samples q 0,0 and p 0,0 respectivelyY Value

[1077] Variable Qp C Is derived as follows:

[1078] qPi = Clip3(0, 63, ((Qp Q + Qp P + 1) >> 1) + cQpPicOffset)

[1079] (8 - 1132)

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

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

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

[1083] - The variables qPCb, qPCr, and QpCbCr are derived as follows:

[1084] qPiChroma = Clip3(-QpBdOffsetC, 63, QpY)

[1085] (8 - 935)

[1086] qPiCb = ChromaQpTable[0][qPiChroma]

[1087] (8 - 936)

[1088] qPiCr = ChromaQpTable[1][qPiChroma]

[1089] (8 - 937)

[1090] qPiCbCr = ChromaQpTable[2][qPiChroma]

[1091] (8 - 938)

[1092] - The chroma quantization parameters for the Cb and Cr components, Qp'Cb and Qp'Cr, and the joint Cb - Cr coding / decoding Qp'CbCr are derived as follows:

[1093] Qp′Cb = Clip3(-QpBdOffsetC, 63, qPCb + pps_cb_qp_offset + slice_cb_qp_offset + CuQpOffsetCb)

[1094] +QpBdOffsetC (8 - 939)

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

[1096] +QpBdOffsetC (8 - 940)

[1097] Qp′CbCr = Clip3(-QpBdOffsetC, 63, qPCbCr + pps_cbcr_qp_offset + slice_cbcr_qp_offset + CuQpOffsetCbCr)

[1098] +QpBdOffsetC (8 - 941)

[1099] When cIdx is equal to 1, the variables QpQ and QpP are set to be equal to the Qp′Cb value of the coding unit containing the coded blocks respectively containing the samples q0,0 and p0,0, or when cIdx is equal to 2, QpQ and QpP are set to the Qp′Cr value of the coding unit containing the coded blocks respectively containing the samples q0,0 and p0,0, or when tu_joint_cbcr_residual_flag is equal to 1, QpQ and QpP are set to the Qp′CbCr of the coding unit containing the coded blocks respectively containing the samples q0,0 and p0,0.

[1100] The variable QpC is derived as follows:

[1101] QpC = (QpQ + QpP + 1) >> 1

[1102] 6. Exemplary Implementations of the Disclosed Technology

[1103] Figure 12is a block diagram of a video processing device 1200. The device 1200 can be used to implement one or more of the methods described herein. The device 1200 can be implemented as a smart phone, a tablet computer, a computer, an Internet of Things (IoT) receiver, and so on. The device 1200 can include one or more processors 1202, one or more memories 1204, and video processing hardware 1206. The (multiple) processors 1202 can be configured to implement one or more of the methods described in this document. The memory (multiple memories) 1204 can be used to store data and code for implementing the methods and techniques described herein. The video processing hardware 1206 can be used to implement some of the techniques described in this document in hardware circuitry and can be partially or fully part of the processor 1202 (e.g., a graphics processing unit core GPU or other signal processing circuitry).

[1104] In this document, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm can be used during the conversion from a pixel representation of a video to a corresponding bitstream representation, or vice versa. The bitstream representation of a current video block can, for example, correspond to bits that are co-located or at different positions distributed within the bitstream, as defined by the syntax. For example, a macroblock can be encoded in terms of transformed and decoded error residual values and also using bits in the headers and other fields in the bitstream.

[1105] It should be understood that the disclosed methods and techniques will benefit video encoder and / or decoder embodiments integrated within a video processing device by allowing the use of the techniques disclosed in this document, such as smart phones, laptop computers, desktop computers, and similar devices.

[1106] Figure 13 is a flowchart of an exemplary 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, deblocking filtering is used at the boundaries of the video unit such that when a chrominance quantization parameter (QP) table is used to derive the parameters of the deblocking filtering, processing by the chrominance QP table is performed on individual chrominance QP values.

[1107] Some embodiments can be described using the following clause-based format.

[1108] 1. A method for video processing, comprising:

[1109] performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundaries of the video unit such that when a chrominance quantization parameter (QP) table is used to derive the parameters of the deblocking filtering, processing by the chrominance QP table is performed on individual chrominance QP values.

[1110] 2. The method according to clause 1, wherein after processing by the chrominance QP table, a chrominance QP offset is added to individual chrominance QP values.

[1111] 3. The method according to any one of clauses 1-2, wherein a chrominance QP offset is added to the value output by the chrominance QP table.

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

[1113] 5. The method according to clause 2, wherein the chrominance QP offset is at the picture level or at the video unit level.

[1114] 6. A method for video processing, comprising:

[1115] Converting between a video unit and a bitstream representation of the video unit, wherein during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, and wherein the chrominance QP offset is at the picture / strip / slice / tile / sub-picture level.

[1116] 7. The method according to clause 6, wherein the chrominance QP offset used in the deblocking filtering is associated with the coding / decoding method applied at the boundary of the video unit.

[1117] 8. The method according to clause 7, wherein the coding / decoding method is the joint coding / decoding of the chrominance residual (JCCR) method.

[1118] 9. A method for video processing, comprising:

[1119] Converting between a video unit and a bitstream representation of the video unit, wherein during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, and wherein information belonging to the same luma coding / decoding unit is used for the deblocking filtering and is used to derive the chrominance QP offset.

[1120] 10. The method according to clause 9, wherein the same luma coding / decoding unit covers the corresponding luma samples at the central position of the video unit, and wherein the video unit is a chrominance coding / decoding unit.

[1121] 11. The method according to clause 9, wherein a scaling process is applied to the video unit, and wherein one or more parameters of the deblocking filtering depend at least in part on the quantization / dequantization parameters of the scaling process.

[1122] 12. The method according to clause 11, wherein the quantization / dequantization parameters of the scaling process include the chrominance QP offset.

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

[1124] 14. The method according to clause 13, wherein the information belonging to the same luminance coding / decoding unit depends on the relative positions of the coding / decoding units with respect to the same luminance coding / decoding unit.

[1125] 15. A method for video processing, comprising:

[1126] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, and an indication enabling the use of the chrominance QP offset is signaled in the bitstream representation.

[1127] 16. The method according to clause 15, wherein the indication is signaled conditionally in response to detecting one or more flags.

[1128] 17. The method according to clause 16, wherein the one or more flags are related to the JCCR enable flag or the chrominance QP offset enable flag.

[1129] 18. The method according to clause 15, wherein the indication is signaled based on derivation.

[1130] 19. A method for video processing, comprising:

[1131] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, and the chrominance QP offset used in the deblocking filtering is the same regardless of whether the JCCR coding / decoding method is applied at the boundary of the video unit or a method different from the JCCR coding / decoding method is applied at the boundary of the video unit.

[1132] 20. A method for video processing, comprising:

[1133] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, deblocking filtering is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filtering, and the boundary strength (BS) of the deblocking filtering is calculated without comparing the reference picture and / or a plurality of motion vectors (MVs) associated with the video unit on the P side boundary with the reference picture and / or a plurality of motion vectors (MVs) associated with the video unit on the Q side.

[1134] 21. The method according to clause 20, wherein deblocking filtering is disabled under one or more conditions.

[1135] 22. The method according to clause 21, wherein the one or more conditions are associated with the magnitude or threshold of a motion vector (MV).

[1136] 23. The method according to clause 22, wherein the threshold is associated with at least one of the following: i. the content of a video unit, ii. a message signaled in a DPS / SPS / VPS / PPS / APS / picture header / strip header / slice group header / largest coding unit (LCU) / coding unit (CU) / LCU row / group of LCUs / TU / PU block / video coding unit, iii. the position of a CU / PU / TU / block / video coding unit, iv. the coding mode of a block having samples along a boundary, v. the transform matrix applied to a video unit having samples along a boundary, vi. the shape or dimension of a video unit, vii. an indication of a color format, viii. a coding tree structure, ix. a strip / slice group type and / or picture type, x. a color component, xi. a temporal layer ID, or xii. a standard profile / level / tier.

[1137] 24. The method according to clause 20, wherein different QP offsets are used for TS-coded video units and non-TS-coded video units.

[1138] 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 a luminance block.

[1139] 26. A video decoding device, comprising a processor configured to implement the method recited in one or more of clauses 1 to 25.

[1140] 27. A video encoding device, comprising a processor configured to implement the method recited in one or more of clauses 1 to 25.

[1141] 28. A computer program product having computer code stored thereon, which when executed by a processor causes the processor to implement the method recited in any one of clauses 1 to 25.

[1142] 29. The method, device or system described in this document.

[1143] Figure 15 is a block diagram illustrating an exemplary video coding and decoding system 100 in which the techniques of the present disclosure can be used.

[1144] As Figure 15As 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, which may be referred to as a video coding device. The destination device 120 may decode the encoded video data generated by the source device 110, which may be referred to as a video decoding device.

[1145] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.

[1146] 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 such 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, and the sequence of bits forms a coded representation of the video data. The bitstream may include coded pictures and associated data. The coded pictures are coded representations of pictures. The associated data may include sequence parameter sets, picture parameter sets, and other syntax structures. The I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. The encoded video data may be directly sent 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.

[1147] The destination device 120 may include an I / O interface 126, a video decoder 124, and a display device 122.

[1148] The I / O interface 126 may include a receiver and / or a modem. The I / O interface 126 may obtain the encoded video data from the source device 110 or the storage medium / server 130b. The video decoder 124 may decode the encoded video data. The display device 122 may display the decoded video data to a user. The display device 122 may be integrated with the destination device 120, or may be external to the destination device 120 configured to interface with an external display device.

[1149] The video encoder 114 and the video decoder 124 may operate according to video compression standards such as the High Efficiency Video Coding (HEVC) standard, the Versatile Video Coding (VVC) standard, and other current and / or future standards.

[1150] Figure 16 is a block diagram illustrating an example of a video encoder 200, which may be the video encoder 114 in the system 100 shown in Figure 15 above.

[1151] Video encoder 200 may be configured to perform any or all of the techniques of the present disclosure. In Figure 16 the example, video encoder 200 includes a plurality of functional components. The techniques described in the present disclosure may be shared among 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.

[1152] The functional components of video encoder 200 may include: a splitting 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 transformation unit 208; a quantization unit 209; an inverse quantization unit 210; an inverse transformation unit 211; a reconstruction unit 212; a buffer 213; and an entropy coding unit 214.

[1153] In other examples, video encoder 200 may include more, fewer, or different functional components. In an example, prediction unit 202 may include an intra block copy (IBC) unit. The IBC unit may perform prediction in an IBC mode, in which at least one reference picture is the picture at the current video block location.

[1154] Additionally, some components such as motion estimation unit 204 and motion compensation unit 205 may be highly integrated, but are shown as separate in the Figure 5 example for explanatory purposes.

[1155] Splitting unit 201 may split a picture into one or more video blocks. Video encoder 200 and video decoder 300 may support various video block sizes.

[1156] Mode selection unit 203 may select, for example, one of the encoding / decoding modes, intra or inter, based on an error result, and provide the resulting intra or inter encoded / decoded block to residual generation unit 207 to generate residual block data, and to reconstruction unit 212 to reconstruct the encoded block for use as a reference picture. In some examples, mode selection unit 203 may select a combination of intra and inter prediction (CIIP) modes, where the prediction is based on both inter prediction signaling and intra prediction signaling. Mode selection unit 203 may also select the resolution of the motion vector for the block (e.g., sub-pixel or integer pixel accuracy) in the case of inter prediction.

[1157] For inter - frame prediction on the current video block, the motion estimation unit 204 can generate motion information for the current video block by comparing one or more reference frames from buffer 213 with the current video block. The motion compensation unit 205 can determine the predicted video block for the current video block based on the motion information and decoded samples of pictures from buffer 213 rather than the picture associated with the current video block.

[1158] For example, depending on whether the current video block is in an I - slice, P - slice, or B - slice, the motion estimation unit 204 and the motion compensation unit 205 can perform different operations on the current video block.

[1159] In some examples, the motion estimation unit 204 can perform uni - directional prediction on the current video block, and the motion estimation unit 204 can search for the reference video block of the current video block in the reference pictures of list 0 or list 1. The motion estimation unit 204 can then generate a reference index and a motion vector. The reference index indicates the reference picture in list 0 or list 1 that contains the reference video block, and the motion vector indicates the spatial displacement between the current video block and the reference video block. The motion estimation unit 204 can output the reference index, the prediction direction indicator, and the motion vector as the motion information of the current video block. The motion compensation unit 205 can generate the predicted video block of the current block based on the reference video block indicated by the motion information of the current video block.

[1160] In other examples, the motion estimation unit 204 can perform bi - directional prediction on the current video block. The motion estimation unit 204 can search for the reference video block of the current video block in the reference pictures of list 0 and can also search for another reference video block of the current video block in the reference pictures of list 1. The motion estimation unit 204 can then generate a reference index and a motion vector. The reference index indicates the reference pictures in list 0 and list 1 that contain the reference video blocks, and the motion vector indicates the spatial displacement between the reference video blocks and the current video block. The motion estimation unit 204 can output the reference index and the motion vector of the current video block as the motion information of the current video block. The motion compensation unit 205 can generate the predicted video block of the current video block based on the reference video blocks indicated by the motion information of the current video block.

[1161] In some examples, the motion estimation unit 204 can output the complete set of motion information of the decoder's decoding process.

[1162] In some examples, the motion estimation unit 204 may not output the complete set of motion information of the current video. Instead, the motion estimation unit 204 can 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 can determine that the motion information of the current video block is sufficiently similar to the motion information of a neighboring video block.

[1163] In one example, the motion estimation unit 204 may indicate a value in a syntax structure associated with the current video block, the value indicating to the video decoder 300 that the current video block has the same motion information as another video block.

[1164] In another example, the motion estimation unit 204 may identify another video block and a motion vector difference (MVD) in a syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. The video decoder 300 may use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.

[1165] As discussed above, the video encoder 200 may predictively signal motion vectors. Two examples of predictive signaling techniques that may be implemented by the video encoder 200 include advanced motion vector prediction (AMVP) and merge mode signaling.

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

[1167] The residual generation unit 207 may generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) the (multiple) predicted video blocks of the current video block from the current video block. The residual data for the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block.

[1168] In other examples, such as in the skip mode, there may be no residual data for the current video block, and the residual generation unit 207 may not perform the subtraction operation.

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

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

[1171] The inverse quantization unit 210 and the inverse transform unit 211 can apply inverse quantization and inverse transform to the transform coefficient video block respectively to reconstruct the residual video block from the transform coefficient video block. The reconstruction unit 212 can add the reconstructed residual video block to the corresponding samples from 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.

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

[1173] The entropy encoding unit 214 can receive data from other functional components of the video encoder 200. When the entropy encoding unit 214 receives data, the entropy encoding unit 214 can perform one or more entropy encoding operations to generate entropy encoded data and output a bitstream containing the entropy encoded data.

[1174] Figure 17 is a block diagram illustrating an example of the video decoder 300, which can be Figure 15 the video decoder 114 of the system 100 shown in

[1175] The video decoder 300 can be configured to perform any or all of the techniques of the present disclosure. In Figure 17 the example of, the video decoder 300 includes multiple functional components. The techniques described in the present disclosure can be shared among various components of the video decoder 300. In some examples, a processor can be configured to perform any or all of the techniques described in the present disclosure.

[1176] In Figure 17 the example of, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, and a reconstruction unit 306 and a buffer 307. The video decoder 300 can perform a decoding pass in some examples, which is generally opposite to the encoding pass described with respect to the video encoder 200 (e.g., Figure 16 ).

[1177] The entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream can contain entropy encoded video data (e.g., blocks of encoded video data). The entropy decoding unit 301 can decode the entropy encoded video data, and from the entropy decoded video data, the motion compensation unit 302 can determine motion information, which includes motion vectors, motion vector precision, reference picture list indices, and other motion information. The motion compensation unit 302 can determine such information by performing, for example, AMVP and merge mode.

[1178] The motion compensation unit 302 may generate motion-compensated blocks and may perform interpolation based on an interpolation filter. An identifier for the interpolation filter to be used with sub-pixel precision may be included in a syntax element.

[1179] The motion compensation unit 302 may use the interpolation filter as used by the video encoder 20 during encoding of a video block to calculate interpolated values of sub-integer pixels of a reference block. The motion compensation unit 302 may determine the interpolation filter used by the video encoder 200 based on received syntax information and use the interpolation filter to generate a predictive block.

[1180] The motion compensation unit 302 may use some syntax information to determine the size of the blocks for encoding the (multiple) frames and / or (multiple) slices of the encoded video sequence, the partitioning information that describes how each macroblock of a picture of the encoded video sequence is partitioned, the mode indicating how each partition is encoded, one or more reference frames (and reference frame lists) for each inter-coded block, and other information for decoding the encoded video sequence.

[1181] The intra prediction unit 303 may use, for example, an intra prediction mode received in the bitstream to form a prediction block from spatially adjacent blocks. The inverse quantization unit 303 inverse quantizes (i.e., dequantizes) the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 301. The inverse transform unit 303 applies an inverse transform.

[1182] The reconstruction unit 306 may add the residual block to the corresponding prediction block generated by the motion compensation unit 202 or the intra prediction unit 303 to form a decoded block. If desired, deblocking filtering may also be applied to the decoded block to filter out block effect artifacts. The decoded video block is then stored in the buffer 307, which provides reference blocks for subsequent motion compensation applications.

[1183] Figure 18 FIG. is a block diagram showing an exemplary video processing system 1800 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of the system 1800. The system 1800 may include an input 1802 to receive 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 1802 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.

[1184] System 1800 may include an encoding / decoding component 1804, which may implement various encoding methods described in this document. The encoding / decoding component 1804 may reduce the average bit rate of a video from input 1802 to the output of the encoding / decoding component 1804 to produce an encoded / decoded representation of the video. Encoding / decoding techniques are thus sometimes referred to as video compression or video transcoding techniques. The output of the encoding / decoding component 1804 may be stored or transmitted via a connected communication, as represented by component 1806. A stored or communicated bitstream (or encoded / decoded) representation of the video received at input 1802 may be used by component 1808 to generate pixel values or a displayable video that is sent to a display interface 1810. The process of generating a user-observable video from a bitstream representation is sometimes referred to as video decompression. Additionally, although certain video processing operations are referred to as "encoding / decoding" operations or tools, it should be understood that encoding / decoding tools or operations are used in an encoder, and corresponding decoding tools or operations that reverse the results of encoding / decoding will be performed by a decoder.

[1185] 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, an IDE interface, etc. The techniques described in this document may be implemented in various electronic devices, such as a mobile phone, a laptop computer, a smartphone, or other devices capable of digital data processing and / or video display.

[1186] Figure 19 is a flowchart representation of a method of video processing according to the present technology. Method 1900 includes, at operation 1910, determining whether to enable a cross-component adaptive loop filtering process for a current video block of a video based on a color property of the video for a conversion between the current video block of the video and a bitstream representation of the video. Method 1900 further includes, at operation 1920, performing the conversion according to the determination.

[1187] In some embodiments, the cross-component adaptive loop filtering process examines the correlation between a luminance component and at least one chrominance component of a video during a loop filtering process. In some embodiments, the color property includes a color format of the video. In some embodiments, the color property includes a color sampling format of the video. In some embodiments, the color property includes a color downsampling position or a color downsampling phase.

[1188] In some embodiments, during transformation, multiple filtering processes including a cross-component adaptive loop filtering process are applied in sequence. In some embodiments, the cross-component adaptive loop filtering process is applied before the deblocking filtering process. In some embodiments, the cross-component adaptive loop filtering process is applied before the sample adaptive offset filtering process. In some embodiments, the cross-component adaptive loop filtering process is applied before the adaptive loop filtering process. In some embodiments, the sequence changes for different video units of the video. In some embodiments, the video units of different video units include coding tree units, coding tree blocks, slices, tiles, pictures, or sequences.

[1189] In some embodiments, the use of the cross-component adaptive loop filtering process is derived during transformation. In some embodiments, the use of the cross-component adaptive loop filtering process is indicated in the bitstream representation.

[1190] In some embodiments, a syntax flag in the bitstream indicates that the cross-component adaptive loop filtering process is enabled and the video includes at least a chrominance component. In some embodiments, the cross-component adaptive loop filtering process is disabled when the video does not include a chrominance component. In some embodiments, the use of the cross-component adaptive loop filtering process is indicated independently for different color components.

[1191] Figure 20 is a flowchart representation of a method of video processing according to the present technology. Method 2000 includes performing a transformation between a video including multiple parts and a bitstream representation of the video. The bitstream representation conforms to format rules that specify a first syntax element, and the first syntax element indicates that the use of a coding tool for coding a first part in the bitstream representation is selectively included in a first video unit of the bitstream representation based on whether a second syntax element is included in a second video unit of the bitstream representation.

[1192] In some embodiments, the first part of the multiple parts includes a picture or a slice. In some embodiments, the motion prediction coding tool includes a bidirectional optical flow coding tool. In some embodiments, the motion prediction coding tool includes a decoder-side motion vector refinement coding tool. In some embodiments, the motion prediction coding tool includes a predictive refinement optical flow coding tool. In some embodiments, the second syntax element indicates that the first syntax element is included in the bitstream representation. In some embodiments, whether the first syntax element is included in the bitstream representation is further based on the type of the slice of the video. In some embodiments, the second syntax element is signaled in the sequence parameter set. In some embodiments, the first syntax element is signaled in the picture header or the slice header.

[1193] Figure 21It is a flowchart representation of a video processing method according to the present technology. Method 2100 includes performing a conversion between a picture of a video and a bitstream representation of the video. During the conversion, one or more positions of at least one quantization matrix or at least one dequantization matrix of a block are constants.

[1194] In some embodiments, the positions in one or more positions of at least one quantization matrix are represented as coordinates (x, y) relative to a video unit of the video, and where x and y are constants. In some embodiments, x = 0 and y = 0. In some embodiments, the video unit includes a transform unit, a transform block, a picture unit, a picture block, a codec unit, or a codec block.

[1195] In some embodiments, the positions in one or more positions of at least one quantization matrix are the same as the positions of the discrete cosine transform. In some embodiments, at least the positions in one or more positions of at least one quantization matrix are omitted in the bitstream representation. In some embodiments, the average or weighted average of one or more positions of at least one quantization matrix is constrained to a constant value. In some embodiments, the deblocking filtering process applicable to a block is based on a constant value. In some embodiments, the constant value is included in a decoding parameter set, a video parameter set, a slice parameter set, a picture parameter set, a slice header, a picture header, a sequence header, or a tile of the bitstream representation. In some embodiments, during the conversion, one or more syntax elements are included in the picture header of the bitstream representation to indicate the quantization matrix to be used for the picture.

[1196] Figure 22 It is a flowchart representation of a video processing method according to the present technology. Method 2200 includes, in operation 2210, for the conversion between a block of a video and a bitstream representation of the video, using a chrominance quantization parameter offset list determined based on the characteristics of the block, where the characteristics include the prediction mode of the block, the picture type, the slice type, the slice type, or the tile type. Method 2200 further includes, in operation 2220, performing the conversion based on the determination. In some embodiments, the use of the chrominance quantization parameter offset list is different for different codec modes of the video, and the different codec modes include at least one of the following: intra mode, inter mode, palette mode, intra block copy (IBC) mode, transform skip mode, block differential pulse codec modulation (BDPCM) mode, transform quantization skip mode, or lossless mode.

[1197] Figure 23 It is a flowchart representation of a video processing method according to the present technology. Method 2300 includes, in operation 2310, for the conversion between a block of a video and a bitstream representation of the video, determining the quantization parameters used in the deblocking filtering process based on the characteristics of the block. Method 2300 further includes, in operation 2320, performing the conversion based on the determination.

[1198] In some embodiments, the characteristics of the samples of a block relative to the boundary of a video unit include position. The video unit includes a coding tree unit, a coding tree block, or a virtual pipeline data unit. In some embodiments, when the position of the sample is along the boundary of the block, the quantization parameter is the luminance quantization parameter of the block. In some embodiments, the boundary includes a horizontal edge. In some embodiments, the boundary includes a vertical edge. In some embodiments, the deblocking filter process is based on the luminance quantization parameter of the block located on the first side of the boundary. In some embodiments, the deblocking filter process is based on the luminance quantization parameter of another block located on the second side of the boundary.

[1199] In some embodiments, the quantization parameter of the deblocking filter process includes at least the luminance quantization parameter of the block located on the first side of the boundary or the chrominance quantization parameter of another block located on the second side of the boundary. In some embodiments, the quantization parameter of the deblocking filter process includes at least the chrominance quantization parameter of the block located on the first side of the boundary or the luminance quantization parameter of another block located on the second side of the boundary.

[1200] In some embodiments, the deblocking filter process is a function based on the chrominance quantization parameter of the block located on the first side of the boundary or another block located on the second side of the boundary. In some embodiments, the function includes an averaging function that averages multiple chrominance quantization parameters. In some embodiments, the averaging function returns the average of 8, 16, 32, 64, or all of the chrominance quantization parameters. In some embodiments, the function includes a maximum function of multiple chrominance quantization parameters. In some embodiments, the maximum function returns the maximum of 8, 16, 32, 64, or all of the chrominance quantization parameters. In some embodiments, the function includes a minimum function of multiple chrominance quantization parameters. In some embodiments, the minimum function returns the minimum of 8, 16, 32, 64, or all of the chrominance quantization parameters. In some embodiments, the function includes a subsampling function of multiple chrominance quantization parameters. In some embodiments, the subsampling function returns the k-th sample among N chrominance quantization parameters, where k is an integer and N is 8, 16, 32, 64, or all of the quantization parameters. In some embodiments, k is 1, (N / 2)-1, (N / 2), or N among every N samples of the chrominance quantization parameters.

[1201] Figure 24is a flowchart representation of a method of video processing according to the present technology. Method 2400 includes, at operation 2410, performing a conversion between a picture of a video and a bitstream representation of the video. During the conversion, the quantization parameter of the chrominance component of the picture is constrained to be the same as that of a chrominance line segment having a length of 4×m and a position relative to the top left corner (4×m×x, 2×y) of the picture, where x and y are non-negative integers and m is a positive integer. In some embodiments, m = 1. In some embodiments, the width of the quantization group of the chrominance component of the picture is greater than or equal to 4×m.

[1202] Figure 25 is a flowchart representation of a method of video processing according to the present technology. Method 2500 includes, at operation 2510, performing a conversion between a picture of a video and a bitstream representation of the video. During the conversion, the quantization parameter of the chrominance component of the picture is constrained to be the same as that of a chrominance column segment having a length of 4×n and a position relative to the top left corner (4×n×y, 2×x) of the picture, where x and y are non-negative integers and n is a positive integer. In some embodiments, n = 1. In some embodiments, the height of the quantization group of the chrominance component of the picture is greater than or equal to 4×n.

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

[1204] Some embodiments of the disclosed technology include making a decision or determination to enable a video processing tool or mode. In an example, when a video processing tool or mode is enabled, the encoder will use or implement the tool or mode in the processing of blocks of the video, but may not necessarily modify the resulting bitstream based on the use of the tool or mode. That is, when a video processing tool or mode is enabled based on a decision or determination, the conversion from blocks of the video to the bitstream representation of the video will use the video processing tool or mode. In another example, when a video processing tool or mode is enabled, the decoder will process the bitstream knowing that the bitstream has been modified based on the video processing tool or mode. That is, the conversion from the bitstream representation of the video to blocks of the video will be performed using the video processing tool or mode enabled based on the decision or determination.

[1205] Some embodiments of the disclosed technology include making a decision or determination to disable a video processing tool or mode. In an example, when a video processing tool or mode is disabled, the encoder will not use the tool or mode in converting blocks of the video 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 knowing that the bitstream has not been modified using the video processing tool or mode enabled based on the decision or determination.

[1206] The disclosed and other solutions, examples, embodiments, modules, and functional operations described in this document can be implemented as digital electronic circuits, or as computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or combinations of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for execution by, or to control the operation of, a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter implementing a machine-readable propagated signal, or combinations of one or more of them. The term “data processing apparatus” encompasses all apparatuses, devices, and machines for processing data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus can include code that creates an execution environment for the computer programs of interest, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or combinations of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, which is generated to encode information for transmission to an appropriate receiver apparatus.

[1207] A computer program (also known as a program, software application, script, or code) can be written in any form of programming language, including a compiled or interpreted language, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. The program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program of interest, 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, which are located at one site or distributed across multiple sites and interconnected by a communication network.

[1208] The processes and logical flows described in this document can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processing and logical flows can also be performed by, and the apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit).

[1209] For example, processors suitable for executing computer programs include general and special purpose microprocessors, as well as any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The basic elements of a computer are a processor for executing instructions and one or more storage devices for storing the instructions and data. Generally, a computer will also include or be operatively coupled to one or more mass storage devices for storing data (e.g., magnetic disks, magneto-optical disks, or optical disks) to receive data from one or more mass storage devices or to transfer data to one or more mass storage devices 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 storage, media, and storage devices, including for example semiconductor storage devices such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, special purpose logic circuitry.

[1210] Although the patent document contains many details, these details should not be construed as limitations on any subject matter or the scope of the claims, but rather as descriptions of features specific to particular embodiments of a particular technology. Certain features described in the context of separate embodiments in this patent document may also be implemented in combination in a single embodiment. Conversely, the various features described in the context of a single embodiment may also be implemented separately in multiple embodiments or in any suitable sub-combination. 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 of the claimed combination may be removed from the combination, and the claimed combination may be directed to a sub-combination or a variation of a sub-combination.

[1211] Similarly, although 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 effect. Additionally, the separation of various system components in the embodiments described in this patent document should not be construed as requiring such separation in all embodiments.

[1212] Only some embodiments and examples have been described, and other embodiments, enhancements, and variations may be made based on what is described and illustrated in this patent document.

Claims

1. A method for processing video data, comprising: performing a conversion between a current video unit of a video and a bitstream of the video according to a rule, where the rule specifies that enabling a first filtering process for the current video unit depends on the color sampling format of the video being only one of 4:2:0, 4:2:2, or 4:4:4; where the first filtering process is a cross-component adaptive loop filtering process, and the cross-component adaptive loop filtering process refines each chrominance component by applying a filtering operation to a luminance component during a loop filtering process and then using an output of the filtering operation for chrominance refinement, so as to use values of luminance samples to refine each chrominance component, wherein a luminance position of luminance samples of the luminance component used in the first filtering process is determined based on the color sampling format.

2. The method according to claim 1, wherein, filtering coefficients of the first filtering process are included in an adaptive parameter set, and the adaptive parameter set is allowed to be referenced in a slice header of a slice to which the current video unit belongs.

3. The method according to claim 1, wherein, based on a second syntax element included in a second video unit level of the bitstream, a first syntax element is selectively included in a first video unit level of the bitstream, and the first syntax element indicates the use of a coding / decoding tool for at least a first part of multiple parts of the video.

4. The method according to claim 3, wherein, the first part of the multiple parts includes a picture, and the first video unit level is a picture header.

5. The method according to claim 3, wherein, the coding / decoding tool includes a bidirectional optical flow coding / decoding tool.

6. The method according to claim 3, wherein, the coding / decoding tool includes a decoder-side motion vector refinement coding / decoding tool.

7. The method according to claim 3, wherein, the second video unit level is a sequence parameter set.

8. The method according to claim 1, wherein, the conversion includes encoding the video into the bitstream.

9. The method according to claim 1, wherein, the conversion includes decoding the video from the bitstream.

10. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein, when the instructions are executed by the processor, the processor is caused to: perform a conversion between a current video unit of a video and a bitstream of the video according to a rule, where the rule specifies that enabling a first filtering process for the current video unit depends on the color sampling format of the video being only one of 4:2:0, 4:2:2, or 4:4:4; where the first filtering process is a cross-component adaptive loop filtering process, and the cross-component adaptive loop filtering process refines each chrominance component by applying a filtering operation to a luminance component during a loop filtering process and then using an output of the filtering operation for chrominance refinement, so as to use values of luminance samples to refine each chrominance component, wherein a luminance position of luminance samples of the luminance component used in the first filtering process is determined based on the color sampling format.

11. The apparatus according to claim 10, wherein, the filtering coefficients of the first filtering process are included in an adaptation parameter set, and the adaptation parameter set is allowed to be referenced in the slice header of the slice to which the current video unit belongs.

12. The apparatus according to claim 10, wherein, based on a second syntax element included in a second video unit level of the bitstream, a first syntax element is selectively included in a first video unit level of the bitstream, the first syntax element indicating the use of a coding / decoding tool for at least a first part of a plurality of parts for coding / decoding the video; wherein the first part of the plurality of parts includes a picture, and the first video unit level is a picture header; wherein the coding / decoding tool includes a bidirectional optical flow coding / decoding tool; wherein the coding / decoding tool includes a decoder-side motion vector refinement coding / decoding tool; and wherein the second video unit level is a sequence parameter set.

13. A non-transitory computer-readable storage medium storing instructions that cause a processor to perform the following: Perform a conversion between a current video unit of a video and a bitstream of the video according to a rule, where the rule specifies that enabling a first filtering process for the current video unit depends on the color sampling format of the video being only one of 4:2:0, 4:2:2, or 4:4:4; where the first filtering process is a cross-component adaptive loop filtering process, and the cross-component adaptive loop filtering process refines each chrominance component by applying a filtering operation to a luminance component during the loop filtering process and then using the output of the filtering operation for chrominance refinement, thereby using the values of luminance samples to refine each chrominance component, wherein, Determine the luminance positions of the luminance samples of the luminance component used in the first filtering process based on the color sampling format.

14. The non-transitory computer-readable storage medium according to claim 13, wherein, the filtering coefficients of the first filtering process are included in an adaptation parameter set, and the adaptation parameter set is allowed to be referenced in the slice header of the slice to which the current video unit belongs.

15. The non-transitory computer-readable storage medium according to claim 13, wherein, based on a second syntax element included in a second video unit level of the bitstream, a first syntax element is selectively included in a first video unit level of the bitstream, the first syntax element indicating the use of a coding / decoding tool for at least a first part of a plurality of parts for coding / decoding the video; where the first part of the plurality of parts includes a picture, and the first video unit level is a picture header; where the coding / decoding tool includes a bidirectional optical flow coding / decoding tool; where the coding / decoding tool includes a decoder-side motion vector refinement coding / decoding tool; and where the second video unit level is a sequence parameter set.

16. A non-transitory computer-readable recording medium storing a bitstream of a video, the bitstream being generated by a method executed by a video processing apparatus, where the method comprises: For a current video unit of the video, a decision to enable a first filtering process for the current video unit is made depending on the color sampling format of the video being only one of 4:2:0, 4:2:2, or 4:4:4; and generating the bitstream according to the decision, wherein the first filtering process is a cross-component adaptive loop filtering process, and the cross-component adaptive loop filtering process refines each chrominance component using the values of the luminance samples by applying a filtering operation to the luminance component during the loop filtering process and then using the output of the filtering operation for chrominance refinement; wherein the luminance positions of the luminance samples of the luminance component used in the first filtering process are determined based on the color sampling format.

17. The non-transitory computer-readable recording medium according to claim 16, wherein the filtering coefficients of the first filtering process are included in an adaptive parameter set, and the adaptive parameter set is allowed to be referenced in the slice header of the slice to which the current video unit belongs.

18. The non-transitory computer-readable recording medium according to claim 16, wherein based on a second syntax element included in a second video unit level of the bitstream, a first syntax element is selectively included in a first video unit level of the bitstream, and the first syntax element indicates the use of a coding / decoding tool for at least a first part of a plurality of parts for coding / decoding the video; wherein the first part of the plurality of parts includes a picture, and the first video unit level is a picture header; wherein the coding / decoding tool includes a bidirectional optical flow coding / decoding tool; wherein the coding / decoding tool includes a decoder-side motion vector refinement coding / decoding tool; and wherein the second video unit level is a sequence parameter set.

19. A method for storing a bitstream of a video, comprising: for a current video unit of the video, making a decision to enable a first filtering process for the current video unit depending on the color sampling format of the video being only one of 4:2:0, 4:2:2, or 4:4:4; and generating the bitstream according to the decision, storing the bitstream in a non-transitory computer-readable storage medium, wherein the first filtering process is a cross-component adaptive loop filtering process, and the cross-component adaptive loop filtering process refines each chrominance component using the values of the luminance samples by applying a filtering operation to the luminance component during the loop filtering process and then using the output of the filtering operation for chrominance refinement; wherein the luminance positions of the luminance samples of the luminance component used in the first filtering process are determined based on the color sampling format.

Citation Information

Patent Citations

  • Method of filter-unit based in-loop filtering

    CN106162186A

  • Adaptive loop filtering for chroma components

    US20130101018A1

Cited By

  • Signaling of quantization parameters in video coding

    US12666024B2