Chroma Quantization Parameter in Video Coding and Decoding
The method improves video coding efficiency by selectively applying deblocking filters based on edge strength and adapting quantization parameters, addressing complexity and compression challenges in existing video coding technologies.
Patent Information
- Application Number
- CN202080064524.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-09-14
- Filing Date
- 2020-09-14
- Publication Date
- 2025-07-15
- Estimated Expiration
- 2040-09-14
AI Technical Summary
When processing chrominance components, existing video encoding and decryption technology has problems such as complex deblocking filtering process, complex boundary intensity derivation logic, improper interaction between chrominance QP table and deblocking filtering, and inaccurate motion vector information, resulting in declining encoding and deblocking performance.
By selectively applying the deblocking filtering process during the video encoding and decoding process, the deblocking filtering process is determined based on the sample point quantization information and the deblocking mode on the edge side, whether or how to apply filtering processing to the block edge is determined using chromatic quantization parameter (QP) offset and boundary intensity to optimize the parameters of the deblocking filter. It is independent of the encoding and decoding mode, adapting to the quantization parameter offset of different encoding and decoding methods, and simplifying the determination process of boundary intensity.
It improves the efficiency and quality of video encoding and decoding, reduces visual artifacts, optimizes the application of chroma filters, and improves the encoding and decoding performance.
Smart Images

Figure CN114402609B_ABST
Abstract
Description
[0001] Cross - reference to related applications
[0002] This application is the national phase entry of international patent application PCT / US2020 / 050649 filed on September 14, 2020, which claims the priority of international patent application number PCT / CN2019 / 105831 filed on September 14, 2019. The entire disclosure of the above applications is incorporated by reference as part of the disclosure of this application. Technical field
[0003] This patent document relates to video coding and decoding technologies, devices, and systems. Background art
[0004] Currently, efforts are being made to improve the performance of current video codec technologies to provide a better compression ratio or to provide video coding and decoding schemes that allow for lower complexity or parallel implementation. Industry experts have recently proposed several new video coding and decoding tools, which are currently being tested to determine their effectiveness. Summary of the invention
[0005] Devices, systems, and methods related to digital video coding are described, particularly devices, systems, and methods related to motion vector management. The described methods can be applied to existing video coding and decoding standards (e.g., High Efficiency Video Coding (HEVC) or Versatile Video Coding) and future video coding and decoding standards or video codecs.
[0006] In a representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between a block of the chrominance component of a video and a bit - stream representation of the video. During the conversion, a de - blocking filtering process is selectively applied to the samples along the block edge, and a chrominance quantization parameter (QP) offset is added to the output from the chrominance QP table to determine the parameters of the de - blocking filtering process.
[0007] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes, for the conversion between a block of the chrominance component of a video and a bit - stream representation of the video, determining whether or how to apply filtering processing to the edge of the block according to a rule based on first quantization information of a first video region including samples on one side of the edge and / or second quantization information of a second video region including samples on the other side of the edge. The rule is based on the coding and decoding mode applicable to the block, for coding or decoding the samples on one side or the other side of the edge. The rule provides for using multiple QP offsets at different video unit levels to determine the first quantization information or the second quantization information. The method further includes performing the conversion based on the determination.
[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 current block of a video and a bitstream representation of the video, and determining whether to enable the use of a chrominance quantization parameter (QP) offset for the current block according to syntax elements at the level of a video unit. The video unit includes the current block of the video and a second block.
[0009] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between a video including a first chrominance component and a second chrominance component and a bitstream representation of the video. According to a rule, the residuals of a first chrominance block of the first chrominance component and a second chrominance block of the second chrominance component are jointly encoded and decoded in the bitstream representation using an encoding / decoding mode. The rule specifies a way to derive a quantization parameter (QP) for the conversion independently of the encoding / decoding mode.
[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 a first block of a video and a bitstream representation of the video. The video has a color format with multiple color components, and the first block is associated with a first color component of the video. During the conversion, a deblocking filtering process is applied to at least some samples along the edge of the first block. The method further includes performing a subsequent conversion between blocks associated with the remaining color components of the video and the bitstream representation of the video. During the subsequent conversion, the deblocking filtering process is applied to at least some samples along the edge of each block in the same manner as the conversion of the first block.
[0011] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes, for a conversion between a video and a bitstream representation of the video, determining a boundary strength of a boundary between two blocks of the video. The boundary strength is determined regardless of whether either of the two blocks is encoded in a joint chrominance residual (JCCR) mode. The method further includes performing the conversion based on the determination.
[0012] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes, for a conversion between a video and a bitstream representation of the video, determining a boundary strength of a boundary between a first block and a second block. The determination is performed without comparing information of the first block with corresponding information of the second block. The information includes the number of reference pictures and / or motion vectors of the corresponding blocks, and the boundary strength is used to determine whether the deblocking filtering process is applicable to the boundary. The method further includes performing the conversion based on the determination.
[0013] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes a conversion between a video block of a video and a bitstream representation of the video, and determining a quantization parameter (QP) for applying deblocking filtering to the video block according to a rule. The rule stipulates that in the case of encoding and decoding a video block using the transform skip (TS) mode, a first QP is used for the determination. In the transform skip mode, by skipping the application of the transform, the residual of the video block is encoded in the bitstream representation. In the case of encoding and decoding a video block using a non-transform skip mode, a second QP different from the first QP is used for the determination. In the non-transform skip mode, the residual of the video block is encoded in the bitstream representation after the application of the transform. The method further includes performing the conversion based on the determination.
[0014] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes a conversion between a video block of a video and a bitstream representation of the video, and determining a gradient for determining the applicability of at least some samples of the edge of the video block to a deblocking filtering process according to a rule. The rule stipulates that the manner of determining the gradient is independent of the size of the video block. The method further includes performing the conversion based on the determination.
[0015] In another representative aspect, the disclosed technology can be used to provide a method for video processing. The method includes performing a conversion between a video unit and a bitstream representation of the video unit, wherein during the conversion, a deblocking filter is used at the boundary of the video unit such that when using a chrominance quantization parameter (QP) table to derive the parameters of the deblocking filter, the chrominance QP table is processed for each chrominance QP value.
[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, wherein during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, where the chrominance QP offset is at the picture / strip / slice / tile / sub-picture level.
[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, wherein during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, where, in the deblocking filter and for deriving the chrominance QP offset, information related to the same luma coding unit is used.
[0018] In another representative aspect, the disclosed technology can be used to provide another video processing method. The method includes performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, wherein an indication signaling the use of the chrominance QP offset is signaled in the bitstream representation.
[0019] In another representative aspect, the disclosed technology can be used to provide another video processing method. The method includes performing a conversion between a video unit and a bitstream representation of the video unit, wherein during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, wherein for whether to apply the JCCR codec method at the boundary of the video unit or a method different from the JCCR codec method at the boundary of the video unit, the chrominance QP offset used in the deblocking filter is the same.
[0020] In another representative aspect, the disclosed technology can be used to provide another video processing method. The method includes performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, wherein the boundary strength (BS) of the deblocking filter is calculated and there is no need to compare the number of reference pictures and / or motion vectors (MVs) associated with the video unit at the P-side boundary with the reference pictures of the video unit at the Q-side boundary.
[0021] In addition, in a representative aspect, a device in a video system is disclosed, the device including a processor and a non-transitory memory having instructions thereon. The instructions executed by the processor cause the processor to implement any one or more of the disclosed methods.
[0022] In addition, in one representative aspect, a video decoding device includes a processor configured to implement any one or more of the disclosed methods.
[0023] In another representative aspect, a video encoding device includes a processor configured to implement any one or more of the disclosed methods.
[0024] 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.
[0025] The above and other aspects and features of the disclosed technology are described in more detail in the drawings, the specification, and the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0026] Figure 1 Shows an example of the overall processing flow of the blocking deblocking filter process.
[0027] Figure 2 Shows an example of the flowchart of Bs calculation.
[0028] Figure 3 Shows an example of the reference information for Bs calculation at the CTU boundary.
[0029] Figure 4 Shows an example of pixels involved in filter on / off decision and strong / weak filter selection.
[0030] Figure 5 Shows an example of the overall processing flow of the deblocking filter process in VVC.
[0031] Figure 6 Shows an example of the luma deblocking filter process in VVC.
[0032] Figure 7 Shows an example of the chroma deblocking filter process in VVC
[0033] Figure 8 Shows an example of determining the filter length at the sub-PU boundary.
[0034] Figure 9A Shows an example of the center position of the chroma block.
[0035] Figure 9B Shows another example of the center position of the chroma block.
[0036] Figure 10 Shows an example of the blocks at the P side and Q side.
[0037] Figure 11 Shows an example of the use of the decoded information of the luma block.
[0038] Figure 12 Is a block diagram of an example of a hardware platform for implementing the visual media decoding or visual media encoding techniques described in this document.
[0039] Figure 13 Shows the flowchart of an example method for video coding and decoding.
[0040] Figure 14 Is a block diagram of an example video processing system in which the disclosed techniques can be implemented.
[0041] Figure 15 Is a flowchart representation of the method of video processing according to the present technology.
[0042] Figure 16 It is a flowchart of another video processing method according to the present technology.
[0043] Figure 17 It is a flowchart of another video processing method according to the present technology.
[0044] Figure 18 It is a flowchart of another video processing method according to the present technology.
[0045] Figure 19 It is a flowchart of another video processing method according to the present technology.
[0046] Figure 20 It is a flowchart of another video processing method according to the present technology.
[0047] Figure 21 It is a flowchart of another video processing method according to the present technology.
[0048] Figure 22 It is a flowchart of another video processing method according to the present technology.
[0049] Figure 23 It is a flowchart of another video processing method according to the present technology.
[0050] Figure 24 It is a block diagram showing an example video codec system.
[0051] Figure 25 It is a block diagram showing an encoder according to some embodiments of the present disclosure.
[0052] Figure 26 It is a block diagram showing a decoder according to some embodiments of the present disclosure. Detailed implementation manners
[0053] 1. Video coding and decoding in HEVC / H.265
[0054] Video coding 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 and H.264 / MPEG-4 Advanced Video Coding (AVC) and H.265 / HEVC standards. Since H.262, video coding standards have been based on a hybrid video coding structure that utilizes temporal prediction plus transform coding. To explore future video coding technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) 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, VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) established the Joint Video Experts Team (JVET) to work on the VVC standard, with the goal of reducing the bitrate by 50% compared to HEVC.
[0055] 2.1. Deblocking Scheme in HEVC
[0056] The deblocking filter process is performed on each CU in the same order as the decoding process. First, the vertical edges (horizontal filtering) are filtered, and then the horizontal edges (vertical filtering) are filtered. For the luminance and chrominance components, filtering is applied to determine the 8×8 block boundaries to be filtered. To reduce complexity, the 4×4 block boundaries are not processed.
[0057] Figure 1 The overall processing flow of the deblocking filter process is shown. The boundary can have three filtering states: no filtering, weak filtering, and strong filtering. Each filtering decision is based on the boundary strength Bs, as well as the thresholds β and tC.
[0058] Three types of boundaries may be involved in the filtering process: CU boundaries, TU boundaries, and PU boundaries. The CU boundary is the outer edge of the CU, and since the CU boundary is always also a TU boundary or a PU boundary, it is always involved in the filtering. When the PU shape is 2NxN (N>4) and the RQT depth is equal to 1, the TU boundary at the 8×8 block grid and the PU boundary between each PU inside the CU are both involved in the filtering. An exception is that when the PU boundary is inside the TU, the boundary is not filtered.
[0059] 2.1.1. Boundary Strength Calculation
[0060] Generally speaking, the boundary strength (Bs) reflects how strong the filtering of the boundary needs to be. If Bs is large, strong filtering should be considered.
[0061] Define P and Q as the blocks involved in filtering, where P represents the block located to the left of the boundary (in the case of a vertical edge) or above (in the case of a horizontal edge), and Q represents the block located to the right of the boundary (in the case of a vertical edge) or below (in the case of a horizontal edge). Figure 2 Shows how to calculate the Bs value based on the intra coding / decoding mode, the presence of non-zero transform coefficients and motion information, reference pictures, the number of motion vectors, and the motion vector difference.
[0062] Bs is calculated on a 4×4 block basis, but it is remapped to an 8×8 grid. The maximum of two Bs values corresponding to 8 pixels consisting of a line in the 4×4 grid is selected as the Bs for the boundary in the 8×8 grid.
[0063] To reduce the line buffer memory requirement, for only the CTU boundary, the information in every second block (4×4 grid) on the left or above is reused, as Figure 3 shown.
[0064] 2.1.2. β and tC Decision
[0065] Based on the luminance quantization parameter QP of the P block and the Q block respectively P and QP Q , thresholds β and t related to filter on / off decision, strong and weak filter selection, and the weak filtering process are derived C . The Q used to derive β and t C is calculated as follows.
[0066] Q = ((QP P + QP Q + 1) >> 1).
[0067] As shown in Table 1, the variable β is derived based on Q. If Bs is greater than 1, the variable t C is specified as Table 1, with Clip3(0, 55, Q + 2) as the input. Otherwise (BS is equal to or less than 1), the variable t C is specified as Table 1, with Q as the input.
[0068] Table 1 Derives the threshold variables β and t from the input Q C
[0069] 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
[0070] 2.1.3. Filter On / Off Decision for 4 Lines
[0071] The filter on / off decision is made in units of four lines. Figure 4Shows the pixels involved in the filter on / off decision. Six pixels in the two red blocks in the first four rows are used to determine the filter on / off for the four rows. Six pixels in the two red blocks in the last four rows are used to determine the filter on / off for the last four rows.
[0072] If dp0 + dq0 + dp3 + dq3 < β, the filtering for the first four rows is turned on, and the strong / weak filter selection process is applied. Each variable is derived as follows.
[0073] 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 |
[0074] 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 |
[0075] If this condition is not met, the first four rows are not filtered. Additionally, if this condition is met, 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.
[0076] For the last four rows, the decision is made in the same way as above.
[0077] 2.1.4.4 Strong / Weak Filter Selection for Four Lines
[0078] After determining that the first four rows are filtered on in the filter on / off decision, if the following two conditions are met, the strong filter is used to filter the first four rows. Otherwise, the weak filter is used for filtering. As Figure 4As shown, the pixels involved are the same as those used for the filter on / off decision.
[0079] 1) 2*(dp0 + dq0) < (β >> 2), |p30 – p00| + |q00 – q30| < (β >> 3) and |p00 – q00| < (5*t C +1) >> 1
[0080] 2) 2*(dp3 + dq3) < (β >> 2), |p33 – p03| + |q03 – q33| < (β >> 3) and |p03 – q03| < (5*t C +1) >> 1
[0081] Similarly, if the following two conditions are met, the 4 rows after strong filter are used. Otherwise, weak filter is used for filtering.
[0082] 1) 2*(dp4 + dq4) < (β >> 2), |p34 – p04| + |q04 – q34| < (β >> 3) and |p04 – q04| < (5*t C +1) >> 1
[0083] 2) 2*(dp7 + dq7) < (β >> 2), |p37 – p07| + |q07 – q37| < (β >> 3) and |p07 – q07| < (5*t C +1) >> 1
[0084] 2.1.4.1. Strong Filtering
[0085] For strong filtering, the filtered pixel values are obtained through the following equations. It should be noted that four pixels are used as the input for each P and Q block to modify three pixels.
[0086] p0’ = (p2 + 2*p1 + 2*p0 + 2*q0 + q1 + 4) >> 3
[0087] q0’ = (p1 + 2*p0 + 2*q0 + 2*q1 + q2 + 4) >> 3
[0088] p1’ = (p2 + p1 + p0 + q0 + 2) >> 2
[0089] q1’ = (p0 + q0 + q1 + q2 + 2) >> 2
[0090] p2’ = (2*p3 + 3*p2 + p1 + p0 + q0 + 4) >> 3
[0091] q2’ = (p0 + q0 + q1 + 3*q2 + 2*q3 + 4) >> 3
[0092] 2.1.4.2. Weak Filtering
[0093] Let us define Δ as follows.
[0094] Δ = (9 * (q0 – p0) – 3 * (q1 – p1) + 8) >> 4
[0095] When abs(Δ) is less than t C * 10,[[]]
[0096] Δ = Clip3(-t C , t C , Δ)
[0097] p0’ = Clip1 Y (p0 + Δ)
[0098] q0’ = Clip1 Y (q0 - Δ)
[0099] If dEp1 equals 1,
[0100] Δp = Clip3(-(t C >> 1), t C >> 1, (((p2 + p0 + 1) >> 1) – p1 + Δ) >> 1)
[0101] p1’ = Clip1 Y (p1 + Δp)
[0102] If dEq1 equals 1,
[0103] Δq = Clip3(-(t C >> 1), t C >> 1, (((q2 + q0 + 1) >> 1) – q1 – Δ) >> 1)
[0104] q1’ = Clip1 Y (q1 + Δq)
[0105] It should be noted that for each P and Q block, three pixels are used as inputs respectively to modify the maximum two pixels.
[0106] 2.1.4.3. Chroma Filtering
[0107] The Bs of chroma filtering inherits from luminance. If Bs > 1 or there are coded chroma coefficients, chroma filtering is performed. There is no other filtering decision. And only one filter is applied to chroma. The filter selection process for chroma is not used. The filtered sample values p0’ and q0’ are derived as follows.
[0108] Δ = Clip3(-t C , t C,((((q0–p0)<<2)+p1–q1+4)>>3))
[0109] p0’ = Clip1 C (p0 + Δ)
[0110] q0’ = Clip1 C (q0 - Δ).
[0111] 2.2 Deblocking Scheme in VVC
[0112] In VTM6, the deblocking filtering process is mostly the same as that in HEVC. However, the following modifications are added.
[0113] A) The filter strength of the deblocking filter depends on the average luminance level of the reconstructed samples.
[0114] B) The deblocking tC table is extended and adapted to 10-bit video.
[0115] C) 4×4 grid deblocking for luminance.
[0116] D) Stronger luminance deblocking filter.
[0117] E) Stronger chrominance deblocking filter.
[0118] F) Deblocking filter at sub-block boundaries.
[0119] G) Deblocking decision adapted to smaller motion differences.
[0120] Figure 5 The flowchart of the deblocking filter process for a coding / decoding unit in VVC is depicted.
[0121] 2.2.1. Filter Strength Depending on the Reconstructed Average Luminance
[0122] In HEVC, the filter strength of the deblocking filter is controlled by the variables β and t C which are derived from the average quantization parameter qP L In VTM6, if the SPS flag of this method is true, the deblocking filter controls the filter strength by adding an offset to qP according to the luminance level of the reconstructed samples L The reconstructed luminance level LL is derived as follows:
[0123] LL = ((p 0,0 + p 0,3 + q 0,0 + q 0,3 ) >> 2) / (1 << bitDepth) (3 - 1)
[0124] where the sample values p i,k and qi,k , where \(i = 0..3\) and \(k = 0\) and \(3\) can be derived. Then, LL is used to make a decision on the qpOffset offset based on the threshold signaled in the SPS. After that, the following derived qP L is used to derive \(\beta\) and \(t\) C .
[0125] qP L = ((Qp Q + Qp P + 1) >> 1)+ qpOffset(3 - 2)
[0126] where Qp Q and Qp P represent 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 applicable to the luma deblocking process.
[0127] 2.2.2. 4×4 Deblocking Grid for Luma
[0128] HEVC uses an 8×8 deblocking grid for luma and chroma. In VTM6, a 4×4 grid deblocking of the luma boundary was introduced to handle the blocking artifacts from rectangular transform shapes. The parallel-friendly luma deblocking on the 4×4 grid is achieved by limiting the number of samples to be deblocked to 1 sample on each side of the vertical luma boundary (where one side width is 4 or less) or 1 sample on each side of the horizontal luma boundary (where one side height is 4 or less).
[0129] 2.2.3. Luma Boundary Strength Derivation
[0130] The detailed boundary strength derivation is shown in Table 2. Check the conditions in Table 2 in sequence.
[0131] Table 2 Boundary Strength Derivation
[0132]
[0133]
[0134]
[0135] 2.2.4. Stronger Luma Deblocking Filter
[0136] When the samples on either side of the boundary belong to a large block, the proposal uses a bilinear filter. The samples belonging to a large block are defined as: the width of the vertical side >= 32, and the height of the horizontal side >= 32.
[0137] The bilinear filter is as follows.
[0138] For block boundary samples \(p_i\) where \(i = 0\) to \(S_p-1\) and \(q_j\) where \(j = 0\) to \(S_q-1\) (\(p_i\) and \(q_j\) follow the definitions in the above HEVC deblocking), they are then replaced by linear interpolation as shown below:
[0139] —p i ′=(f i *Middle s,t +(64 - f i )*P s +32)>>6), clipped to p i ±tcPD i
[0140] —q j ′=(g j *Middle s,t +(64 - g j )*Q s +32)>>6), clipped to q j ±tcPD j
[0141] Where the tcPD i and tcPD j terms are position - dependent clipping described in Section 2.2.5, and g j , f i , Middle s,t , P s and Q s are given as follows:
[0142]
[0143]
[0144] 2.2.5. Deblocking Control for Luminance
[0145] This subsection describes the deblocking decision process.
[0146] The wider - stronger luminance filter is a filter that is used only when Conditions 1, 2, and 3 are all true.
[0147] Condition 1 is the "large block condition". This condition detects whether the samples on the P - side and Q - side belong to large blocks, which are represented by the variables bSidePisLargeBlk and bSideQisLargeBlk respectively. The definitions of bSidePisLargeBlk and bSideQisLargeBlk are as follows.
[0148] bSidePisLargeBlk = ((the edge type is vertical and p0 belongs to a CU with width >= 32) || (the edge type is horizontal and p0 belongs to a CU with height >= 32))? true : false
[0149] bSideQisLargeBlk = ((the edge type is vertical and q0 belongs to a CU with width >= 32) || (the edge type is horizontal and q0 belongs to a CU with height >= 32))? true : false
[0150] Based on bSidePisLargeBlk and bSideQisLargeBlk, Condition 1 is defined as follows.
[0151] Condition 1 = (bSidePisLargeBlk || bSidePisLargeBlk)? true : false
[0152] Next, if Condition 1 is true, Condition 2 will be further checked. First, the following variables are derived:
[0153] dp0, dp3, dq0, dq3 are first derived as in HEVC
[0154] if (the p side is greater than or equal to 32)
[0155] dp0 = (dp0 + Abs(p 5,0 - 2 * p 4,0 + p 3,0 )) + 1) >> 1
[0156] dp3 = (dp3 + Abs(p 5,3 - 2 * p 4,3 + p 3,3 )) + 1) >> 1
[0157] if (the q side is greater than or equal to 32)
[0158] dq0 = (dq0 + Abs(q 5,0 - 2 * q 4,0 + q 3,0 )) + 1) >> 1
[0159] dq3 = (dq3 + Abs(q 5,3 - 2 * q 4,3 + q 3,3 )) + 1) >> 1
[0160] dpq0, dpq3, dp, dq, d are derived as in HEVC.
[0161] Then Condition 2 is defined as follows.
[0162] Condition 2 = (d < β)? true : false
[0163] where d = dp0 + dq0 + dp3 + dq3, as shown in Section 2.1.4
[0164] If both Condition 1 and Condition 2 are valid, check if any block uses sub - blocks:
[0165] If(bSidePisLargeBlk)
[0166] If(Pattern Block P == SUBBLOCKMODE)
[0167] Sp = 5
[0168] else
[0169] Sp = 7
[0170] else
[0171] Sp = 3
[0172] If(bSideQisLargeBlk)
[0173] If(Pattern Block Q == SUBBLOCKMODE)
[0174] Sq = 5
[0175] else
[0176] Sq = 7
[0177] else
[0178] Sq = 3
[0179] 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
[0180] In the Condition 3 strong filtering condition (StrongFilterCondition), the following variables are derived
[0181] dpq, which is derived as in HEVC
[0182] sp3 = Abs(p3 - p0), derived as in HEVC
[0183] if(p side is greater than or equal to 32)
[0184] if(Sp == 5)
[0185] sp3 = (sp3 + Abs(p5 - p3)+1) >> 1
[0186] else
[0187] sp3 = (sp3 + Abs(p7 - p3) + 1) >> 1
[0188] sq3 = Abs(q0 - q3), derived as in HEVC
[0189] if (q side is greater than or equal to 32)
[0190] If (Sq == 5)
[0191] sq3 = (sq3 + Abs(q5 - q3) + 1) >> 1
[0192] else
[0193] sq3 = (sq3 + Abs(q7 - q3) + 1) >> 1
[0194] As in HEVC derivation, StrongFilterCondition = (dpq is less than (β >> 2), sp3 + sq3 is less than (3 * β >> 5), Abs(p0 - q0) is less than (5 * tC + 1) >> 1)? true : false
[0195] Figure 6 Describes the flowchart of the luma deblocking filtering process.
[0196] 2.2.6. Chroma strong deblocking filter
[0197] Defines the following chroma strong deblocking filter:
[0198] p2' = (3 * p3 + 2 * p2 + p1 + p0 + q0 + 4) >> 3
[0199] p1' = (2 * p3 + p2 + 2 * p1 + p0 + q0 + q1 + 4) >> 3
[0200] p0' = (p3 + p2 + p1 + 2 * p0 + q0 + q1 + q2 + 4) >> 3
[0201] The proposed chroma filter performs deblocking on a 4×4 chroma sample grid.
[0202] 2.2.7. Chroma deblocking control
[0203] The above chroma filter performs deblocking on an 8×8 chroma sample grid. The chroma strong filter is used on both sides of the block boundary. Here, when both sides of the chroma edge are greater than or equal to 8 (in chroma samples), the chroma filter is selected and a decision with three conditions is satisfied. The first is the decision on boundary strength and large blocks. The second and third are basically the same as the HEVC luma decisions, which are on / off decision and strong filter decision respectively.
[0204] Figure 7 Depicts a flowchart of the chrominance deblocking filtering process.
[0205] 2.2.8. Position-dependent cropping
[0206] The proposal also introduces position-dependent cropping tcPD, which is applied to the output samples of the luminance filtering process and involves strong and long filters that modify 7, 5, and 3 samples at the boundaries. Assuming a quantization error distribution, the proposal increases the cropping values for samples expected to have high quantization noise, so the reconstructed sample values are expected to deviate more from the true sample values.
[0207] Based on the results of the decision process described in Section 2.2, for each P or Q boundary filtered with the proposed asymmetric filter, a position-dependent threshold table is selected from the Tc7 and Tc3 tables and provided to the decoder as side information:
[0208] Tc7 = {6, 5, 4, 3, 2, 1, 1};
[0209] Tc3 = {6, 4, 2};
[0210] tcPD = (SP == 3)? Tc3 : Tc7;
[0211] tcQD = (SQ == 3)? Tc3 : Tc7;
[0212] For P or Q boundaries filtered with a short symmetric filter, a lower magnitude position-dependent threshold is applied:
[0213] Tc3 = {3, 2, 1};
[0214] After defining the thresholds, the filtered p’i and q’i sample values are cropped according to the tcP and tcQ cropping values:
[0215] p” i = clip3(p’ i + tcP i , p’ i – tcP i , p’ i );
[0216] q” j = clip3(q’ j + tcQ j , q’ j – tcQ j , q’ j );
[0217] where p’ i and q’ iis the filtered sample value, p” i and q” j are the output sample values after clipping, and tcP i and tcQ i are the clipping thresholds derived from the VVC tc parameters and tcPD and tcQD. The term clip3 is the clipping function as specified in VVC.
[0218] 2.2.9. Sub - block Deblocking Adjustment
[0219] To achieve parallel - friendly deblocking using long filters and sub - block deblocking, the long filter is restricted to modifying at most 5 samples on the side where sub - block deblocking is used, as shown for the luminance control of the long filter. Additionally, the sub - block deblocking is adjusted such that the sub - block boundaries on the 8×8 grid near the CU or implicit TU boundary are restricted to modifying at most two samples per side.
[0220] The following applies to sub - block boundaries not aligned with the CU boundary.
[0221]
[0222] Where the edge equal to 0 corresponds to the CU boundary, the edge equal to 2 or equal to orthogonalLength - 2 corresponds to the sub - block boundary 8 samples from the CU boundary, and so on. If the implicit partitioning of the TU is used, implicit TU is true. Figure 8 Shows the flowchart of the determination process of the TU boundary and the sub - PU boundary.
[0223] When the horizontal boundary is aligned with the CTU boundary, the filtering limit for the horizontal boundary is Sp = 3 for luminance and Sp = 1 and Sq = 1 for chrominance.
[0224] 2.2.10. Deblocking Decision Adapted to Smaller Motion Differences
[0225] When the difference of at least one motion vector component between the blocks on each side of the boundary is equal to or greater than the threshold of 1 sample, HEVC can deblock the prediction unit boundary. In VTM6, a threshold for half - luminance samples was introduced to eliminate deblocking artifacts at the boundaries between inter - prediction units with smaller motion vector differences.
[0226] 2.3. Combined Inter - frame and Intra - frame Prediction (CIIP)
[0227] In VTM6, when a CU is coded in Merge mode, if the CU contains at least 64 luma samples (i.e., the CU width times the CU height is equal to or greater than 64), and if both the CU width and CU height are less than 128 luma samples, an additional flag is signaled to indicate whether the combined inter / intra prediction (CIIP) mode is applied to the current CU. As the name implies, CIIP prediction combines the inter prediction signal with the intra prediction signal. The same inter prediction process applied to the regular Merge mode is used to derive the inter prediction signal P in the CIIP mode inter ; and the intra prediction signal P intra is derived after the regular intra prediction process in planar mode. Then, weighted averaging is used to combine the intra and inter prediction signals, where the weight values are calculated according to the coding modes of the top and left neighboring blocks, as follows:
[0228] – If the top neighbor is available and is intra-coded, set IsinatraTop to 1, otherwise set IsinatraTop to 0;
[0229] – If the left neighbor is available and is intra-coded, set IsitraLeft to 1, otherwise set IsitraLeft to 0;
[0230] – If (IsitraLeft + IsitraLeft) equals 2, set wt to 3;
[0231] – Otherwise, if (IsitRaleft + IsitRaleft) equals 1, set wt to 2;
[0232] – Otherwise, set wt to 1.
[0233] The CIIP prediction is formed as follows:
[0234] p CIIP = ((4 - wt)*P inter + wt*P intra + 2) >> 2
[0235] 2.4. Chrominance QP Table Design in VTM-6.0
[0236] In some embodiments, a chrominance QP table is used. In some embodiments, a signaling mechanism is used for the chrominance QP table, which provides the opportunity to flexibly optimize the table for the encoder for SDR and HDR content. It supports signaling table signals for the Cb and Cr components separately. The proposed mechanism signals the chrominance QP table as a piecewise linear function
[0237] 2.5. Transform Skip (TS)
[0238] Similar to HEVC, the residual of a block can be coded and decoded using the transform skip mode. To avoid redundancy in syntax coding, when the MTS_CU_flag at the CU level is not equal to 0, the transform skip flag is not signaled. The block size limit for transform skip is the same as that of MTS in JEM4, which indicates that transform skip is applicable to a CU when both the block width and height are equal to or less than 32. Note that when LFNST or MIP is activated for the current CU, the implicit MTS transform is set to DCT2. In addition, when MTS is enabled for a block coded inter, the implicit MTS can still be enabled.
[0239] In addition, for transform skip blocks, the minimum allowable quantization parameter (QP) is defined as 6*(internalBitDepth–inputBitDepth)+4.
[0240] 2.6. Joint Coding of Chrominance Residuals (JCCR)
[0241] In some embodiments, chrominance residuals are jointly coded. The use (activation) of the joint chrominance coding mode is indicated by the TU-level flag tu_joint_cbcr_residual_flag, and the selected mode is implicitly indicated by the chrominance CBF. If one or both of the chrominance CBFs of a TU are equal to 1, the flag tu_joint_cbcr_residual_flag exists. In the PPS and slice header, chrominance QP offset values are signaled for the joint chrominance residual coding mode, to be different from the normal chrominance QP offset values signaled for the regular chrominance residual coding mode. These chrominance QP offset values are used to derive the chrominance QP values for those blocks coded using the joint chrominance residual coding mode. When the corresponding joint chrominance coding mode (mode 2 in Table 3) in a TU is active, this chrominance QP offset is added to the applied luminance-derived chrominance QP during the quantization and decoding process of that TU. For other modes (mode 1 and 3 in Table 3), the chrominance QP is derived in the same way as for a traditional Cb or Cr block. Table 3 depicts the process of reconstructing chrominance residuals from the transmitted transform blocks. When this mode is activated, a single joint chrominance residual block (resJointC[x][y] in Table 3) is signaled, and the residual blocks of Cb (resCb) and Cr (resCr) are derived considering information such as tu_cbf_cb, tu_cbf_cr, and CSign, where CSign is the sign value specified in the slice header.
[0242] On the encoder side, the joint chrominance components are derived as follows. Depending on the mode (listed in the table above), resJointC{1,2} is generated by the encoder as follows:
[0243] · If the mode is equal to 2 (single residual for reconstructing Cb = C, Cr = C Sign * C), the joint residual is determined according to the following formula
[0244] resJointC[x][y] = (resCb[x][y] + C Sign * resCr[x][y]) / 2.
[0245] · Otherwise, if the mode is equal to 1 (single residual for reconstructing Cb = C, Cr = (C Sign * C) / 2), the joint residual is determined according to the following formula
[0246] resJointC[x][y] = (4 * resCb[x][y] + 2 * C Sign * resCr[x][y]) / 5.
[0247] · Otherwise (mode is equal to 3, i.e., single residual, reconstructing Cr = C, Cb = (C Sign * C) / 2), the joint residual is determined according to the following formula
[0248] resJointC[x][y] = (4 * resCr[x][y] + 2 * C Sign * resCb[x][y]) / 5.
[0249] Table 3 Reconstruction of chrominance residuals. The value C Sign is the sign value (+1 or –1), which is specified in the slice header, and resJointC[][] is the transmitted residual.
[0250]
[0251] The above three modes use different QPs. For mode 2, the QP offset signaled in the PPS of the block encoded / decoded by JCCR is applied, while for the other two modes, it is not applied. Instead, the QP offset signaled in the PPS of the block not encoded / decoded by JCCR is applied.
[0252] The corresponding specification is as follows:
[0253] 8.7.1 Derivation process of quantization parameter
[0254] Variable Qp Y is derived as follows:
[0255] Qp Y = ((qP Y_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffset Y ) % (64 + QpBdOffset Y )) - QpBdOffset Y (8 - 933)
[0256] Luminance quantization parameter Qp′ Y is derived as follows:
[0257] Qp′ Y = Qp Y + QpBdOffset Y (8 - 934)
[0258] When ChromaArrayType is not equal to 0 and treeType is equal to SINGLE_TREE or DUAL_TREE_CHROMA, the following applies:
[0259] – When treeType is equal to DUAL_TREE_CHROMA, the variable Qp Y is set to be equal to the luminance quantization parameter Qp of the luminance coding / decoding unit covering the luminance position (xCb + cbWidth / 2, yCb + cbHeight / 2) Y .
[0260] – The variables qP Cb , qP Cr and qP CbCr are derived as follows:
[0261] qPi Chroma = Clip3(-QpBdOffset C , 63, Qp Y ) (8 - 935)
[0262] qPi Cb = ChromaQpTable[0][qPi Chroma (8 - 936)
[0263] qPi Cr = ChromaQpTable[1][qPi Chroma (8 - 937)
[0264] qPi CbCr = ChromaQpTable[2][qPi Chroma (8 - 938)
[0265] – The chrominance quantization parameters Qp′ Cb and Qp′ Cr for the Cb and Cr components and the joint Cb - Cr coding Qp′ CbCr are derived as follows:
[0266] Qp′ Cb = Clip3(-QpBdOffset C , 63, qP Cb+pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffset Cb )
[0267] +QpBdOffset C (8-939)
[0268] Qp′ Cr =Clip3(-QpBdOffset C ,63,qP Cr +pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffset Cr )
[0269] +QpBdOffset C (8-940)
[0270] Qp′ CbCr =Clip3(-QpBdOffset C ,63,qP CbCr +pps_cbcr_qp_offset+slice_cbcr_qp_offset+CuQpOffset CbCr )
[0271] +QpBdOffset C (8-941)
[0272] 8.7.3 Scaling Process of Transform Coefficients
[0273] The inputs to this process are:
[0274] – The luminance position (xTbY, yTbY) of the top-left sample of the specified current luminance transform block relative to the top-left luminance sample of the current picture,
[0275] – The variable nTbW specifying the width of the transform block,
[0276] – The variable nTbH specifying the height of the transform block,
[0277] – The variable cIdx specifying the color component of the current block,
[0278] – The variable bitDepth specifying the bit depth of the current color component.
[0279] The output of this process is an (nTbW) x (nTbH) array d of scaled transform coefficients with elements d[x][y].
[0280] The quantization parameter qP is derived as follows:
[0281] – If cIdx is equal to 0 and transform_skip_flag[xTbY][yTbY] is equal to 0,
[0282] then the following applies:
[0283] P = Qp′ Y (8-950)
[0284] – Otherwise, if cIdx is equal to 0 (and transform_skip_flag[xTbY][yTbY] is equal to 1), then the following applies:
[0285] qP = Max(QpPrimeTsMin, Qp′ Y ) (8-951)
[0286] – Otherwise, if TuCResMode[xTbY][yTbY] is equal to 2, then the following applies:
[0287] qP = Qp′ CbCr (8-952)
[0288] – Otherwise, if cIdx is equal to 1, then the following applies:
[0289] qP = Qp′ Cb (8-953)
[0290] – Otherwise (cIdx is equal to 2), the following applies:
[0291] qP = Qp′ Cr (8-954)
[0292] 3. Disadvantages of the existing embodiments
[0293] During the refinement of the motion vector, DMVR and BIO do not involve the original signal, which may result in inaccurate motion information in the coded / decoded blocks. 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 the coding / decoding performance worse.
[0294] 1. There may be problems with the interaction between the chrominance QP table and chrominance deblocking. For example, the chrominance QP table should be applied to individual QPs rather than the weighted sum of QPs.
[0295] 2. The logic of the luminance deblocking filtering process is complex for hardware design.
[0296] 3. The logic for boundary strength derivation is too complex for both software and hardware design.
[0297] 4. In the BS decision process, the JCCR is processed separately from those blocks that do not apply JCCT encoding / decoding. However, the JCCR is just a special way of encoding / decoding the residuals. Therefore, this design may introduce additional complexity without obvious benefits.
[0298] 5. In the chroma edge decision, Qp Q and Qp P are set to be equal to the Qp Y value of the coding unit that includes the coding blocks containing the samples q 0,0 and p 0,0 respectively. However, in the quantization / dequantization process, the QP of the chroma samples is derived from the QP of the luma block of the corresponding luma samples covering the central position of the current chroma CU. When the dual tree is enabled, different positions of the luma block may result in different QPs. Therefore, in the chroma deblocking process, incorrect QPs may be used for filter decision. This misalignment may lead to visual artifacts. Figure 9A is the corresponding CTB segmentation of the luma block, Figure 9B and is the chroma CTB segmentation under the dual tree. When determining the QP of a chroma block (denoted by CU c 1), first the central position of CU c 1 is derived. Then, the corresponding luma samples at the central position of CU c 1 are identified, and the luma QP associated with the luma CU covering the corresponding luma samples, i.e., CU Y 3, is then utilized to derive the QP of CU c 1. However, when making the filter decision for the three depicted samples (denoted by solid circles), the QP of the CU covering the corresponding three samples is selected. Therefore, for the first, second, and third chroma samples (as Figure 9B shown), the QPs of CU Y 2, CU Y 3, and CU Y 4 are utilized respectively. That is, chroma samples in the same CU may use different QPs for filter decision, which may lead to incorrect decisions.
[0299] 6. Different picture-level QP offsets (i.e., pps_joint_cbcr_qp_offset) are applied to the blocks encoded / decoded by JCCR, which are different from the picture-level offsets for Cb / Cr applied to the blocks encoded / decoded non-JCCR (e.g., pps_cb_qp_offset and pps_cr_qp_offset). However, in the chroma deblocking filter decision process, only those offsets for the blocks encoded / decoded non-JCCR are utilized. The lack of consideration of the coding mode may lead to incorrect filter decisions.
[0300] 7. Different QPs are used for the dequantization of TS and non-TS coded blocks, which can also be considered during the deblocking process.
[0301] 8. For JCCR coded blocks with different modes, different QPs are used during the scaling process (quantization / dequantization). Such a design is not consistent.
[0302] 4. Example Techniques and Embodiments
[0303] The detailed embodiments described below should be considered as examples for explaining the general concepts. These embodiments should not be interpreted narrowly. In addition, these embodiments can be combined in any way.
[0304] In addition to DMVR and BIO mentioned below, the methods described below can also be applied to other decoder motion information derivation techniques.
[0305] In the following examples, MVM[i].x and MVM[i].y represent the horizontal and vertical components of the motion vector in reference picture list i (i is 0 or 1) of the block on the M (M is P or Q) side. Abs represents the operation of obtaining the absolute value of the input, and "&&" and "||" represent the logical operations AND and OR. Refer Figure 10 , P can represent the samples on the P side, and Q can represent the samples on the Q side. The blocks on the P side and the Q side can represent the blocks marked by the dotted line.
[0306] Regarding Chrominance QP in Deblocking
[0307] 1. When the chrominance QP table is used to derive the parameters for controlling chrominance deblocking (e.g., during the decision-making process at the chrominance block edge), the chrominance QP offset can be applied after applying the chrominance QP table.
[0308] a. In one example, the chrominance QP offset can be added to the value output by the chrominance QP table.
[0309] b. Alternatively, the chrominance QP offset may not be considered as an input to the chrominance QP table.
[0310] 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).
[0311] 2. QP clipping may not be applicable to the input of the chrominance QP table.
[0312] 3. It is proposed to consider the picture / strip / slice / tile / sub-picture-level quantization parameter offset for different coding methods during the deblocking filter decision-making process.
[0313] a. In one example, the selection of picture / band / tile / slice / sub-picture level quantization parameter offsets for filter decisions (e.g., chrominance edge decisions in the deblocking filter process) can depend on the coding / decoding method on each side.
[0314] b. In one example, a filtering process (e.g., chrominance edge decision process) that requires the use of quantization parameters for chrominance blocks can depend on whether the block uses JCCR.
[0315] i. Alternatively, additionally, picture / band-level QP offsets (e.g., pps_joint_cbcr_qp_offset) applied to blocks coded / decoded with JCCR can be further considered in the deblocking filter process.
[0316] ii. In one example, under certain conditions, cQpPicOffset used for decision-making of Tc and β settings can be set to pps_joint_cbcr_qp_offset instead of pps_cb_qp_offset or pps_cr_qp_offset:
[0317] 1. In one example, when any one block on the P or Q side uses JCCR.
[0318] 2. In one example, when both blocks on the P or Q side use JCCR.
[0319] 4. A chrominance filtering process (e.g., chrominance edge decision process) that requires access to the decoded information of a luma block can utilize the information associated with the same luma coding / decoding block, which is used to derive the chrominance QP during dequantization / quantization.
[0320] a. In one example, a chrominance filtering process (e.g., chrominance edge decision process) that requires the use of quantization parameters of a luma block can utilize the luma coding / decoding unit of the corresponding luma samples covering the center position of the current chrominance CU.
[0321] b. The decoded information of CU Y 3 can be used for Figure 9B the filtering decisions of three chrominance samples (the first, the second, and the third).
[0322] 5. A chrominance filtering process (e.g., chrominance edge decision process) can depend on the quantization parameters of the scaling process (e.g., quantization / dequantization) applied to the chrominance block.
[0323] a. In one example, the QP used to derive β and Tc may depend on the QP of the scaling process applied to the chrominance block.
[0324] b. Alternatively, in addition, the QP for the scaling process of the chroma block may have considered the chroma CU-level QP offset.
[0325] 6. Whether to call the above bullet may depend on whether the samples to be filtered are in the blocks on the P side or the Q side.
[0326] a. For example, whether to use the information of the luma coding block that covers the corresponding luma sample of the current chroma sample or the information of the luma coding block that covers the corresponding luma sample at the center position of the chroma coding block of the current chroma sample may depend on the block position.
[0327] i. In one example, if the current chroma sample is in the block on the Q side, the QP information of the luma coding block that covers the corresponding luma sample at the center position of the chroma coding block that covers the current chroma sample may be used.
[0328] ii. In one example, if the current chroma sample is in the block on the P side, the QP information of the luma coding block that covers the corresponding luma sample of the chroma sample may be used.
[0329] Regarding QP Environment
[0330] 7. It is proposed to signal an indication (such as slice_cu_chroma_qp_offset_enabled_flag) to enable block-level chroma QP offset at the strip / slice / tile / sub-picture level.
[0331] a. Alternatively, such an indication may be signaled conditionally.
[0332] i. In one example, it may be signaled under the condition of the JCCR enable flag.
[0333] ii. In one example, it may be signaled under the condition of the block-level chroma QP offset enable flag at the picture level.
[0334] iii. Alternatively, such an indication may be derived instead.
[0335] b. In one example, slice_cu_chroma_qp_offset_enabled_flag may be signaled only when the PPS flag for chroma QP offset (e.g., slice_cu_chroma_qp_offset_enabled_flag) is true.
[0336] c. In one example, the 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.
[0337] 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.
[0338] 8. For blocks with JCCR encoding and decoding in different modes, the same QP derivation method is used during the scaling process (quantization / dequantization).
[0339] a. In one example, for JCCR of mode 1 and mode 3, the QP depends on the QP offset signaled at the picture / slice level (e.g., pps_cbcr_qp_offset,
[0340] slice_cbcr_qp_offset).
[0341] Filtering Procedure
[0342] 9. Deblocking of all color components except the first color component can follow the deblocking process of the first color component.
[0343] a. In one example, when the color format is 4:4:4, the deblocking process of the second and third components can follow the deblocking process of the first component.
[0344] 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 follow the deblocking process of the first component.
[0345] c. In one example, when the color format is 4:2:2, the vertical deblocking process of the second and third components can follow the vertical deblocking process of the first component.
[0346] d. In the above examples, the deblocking process can refer to the deblocking decision process and / or the deblocking filtering process.
[0347] Regarding Boundary Strength Derivation
[0348] 10. It is proposed to consider the blocks with JCCR encoding and decoding as those blocks without JCCR encoding and decoding during the boundary strength decision process.
[0349] a. In one example, the determination of the boundary strength (BS) can be independent of the check for the use of JCCR on two blocks on the P and Q sides.
[0350] a. In one example, the boundary strength of a block can be determined regardless of whether the block is encoded / decoded using JCCR.
[0351] 11. It is proposed to derive the boundary strength without comparing the number of reference pictures and / or MVs associated with the block on the P side with the number of reference pictures / MVs of the block on the Q side.
[0352] b. In one example, even when two blocks have different reference pictures, deblocking filtering can be disabled.
[0353] c. In one example, even when two blocks have different numbers of MVs (e.g., one is unidirectionally predicted while the other is bidirectionally predicted), the deblocking filter can be disabled.
[0354] d. In one example, when the motion vector difference of one or all reference picture lists between the blocks on the P side and the Q side is greater than or equal to the threshold Th, the value of BS can be set to 1.
[0355] i. Alternatively, furthermore, when the motion vector difference of one or all reference picture lists between the blocks on the P side and the Q side is less than or equal to the threshold Th, the value of BS can be set to 0.
[0356] 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
[0357] i. Alternatively, 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
[0358] ii. Alternatively, 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
[0359] iii. Alternatively, in one example, the difference between the motion vectors of two blocks being greater than a threshold Th can be defined as (Abs(MVP[0].x - MVQ[0].x) > Th && Abs(MVP[0].y - MVQ[0].y) > Th) || (Abs(MVP[1].x - MVQ[1].x) > Th) && Abs(MVP[1].y - MVQ[1].y) > Th)
[0360] 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.
[0361] g. In the above example, Th is an integer (e.g., 4, 8, or 16).
[0362] h. In the above example, Th can depend on
[0363] i. the video content (e.g., screen content or natural content)
[0364] ii. a message signaled in the DPS / SPS / VPS / PPS / APS / picture header / strip header / slice group header / largest coding unit (LCU) / coding unit (CU) / LCU row / group of LCUs / TU / PU block / video coding unit
[0365] iii. the position of the CU / PU / TU / block / video coding unit
[0366] iv. the coding mode of a block that contains samples along an edge
[0367] v. the transform matrix applied to a block that contains samples along an edge
[0368] vi. the block dimension / block shape of the current block and / or its neighboring blocks
[0369] vii. an indication of the color format (e.g., 4:2:0, 4:4:4, RGB, or YUV)
[0370] viii. the coding tree structure (e.g., binary tree or single tree)
[0371] ix. the strip / slice group type and / or the picture type
[0372] x. the color component (e.g., applicable only to Cb or Cr)
[0373] xi. the temporal layer ID
[0374] xii. the profile / level / tier of the standard
[0375] xiii. Alternatively, Th can be signaled to the decoder.
[0376] i. The above examples can be applied under certain conditions.
[0377] i. In one example, the condition is that blkP and blkQ are not coded / decoded in the intra mode.
[0378] ii. In one example, the condition is that blkP and blkQ have zero coefficients in the luma component.
[0379] iii. In one example, the condition is that blkP and blkQ are not coded / decoded in the CIIP mode.
[0380] iv. In one example, the condition is that blkP and blkQ are coded / decoded with the same prediction mode (e.g., IBC or Inter).
[0381] Regarding Luminance Deblocking Filtering Process
[0382] 12. Deblocking can use different QPs for blocks coded / decoded by TS and blocks not coded / decoded by TS.
[0383] a. In one example, the QP of TS can be used for blocks coded / decoded by TS, while the QP of non - TS can be used for blocks not coded / decoded by TS.
[0384] 13. The luma filtering process (e.g., the luma edge decision process) can depend on the quantization parameter of the scaling process applied to the luma block.
[0385] a. In one example, the QP used to derive β (beta) and Tc can depend on the clipping range of the transform skip, e.g., as indicated by QpPrimeTsMin.
[0386] 14. It is proposed to use the same gradient calculation for large - block boundaries and small - block boundaries.
[0387] a. In one example, the deblocking filter on / off decision described in Section 2.1.4 can also be applied to large - block boundaries.
[0388] i. In one example, the threshold beta in the decision can be modified for large - block boundaries.
[0389] 1. In one example, beta can depend on the quantization parameter.
[0390] 2. In one example, the β for the deblocking filter on / off decision for large - block boundaries can be less than the beta for smaller - block boundaries.
[0391] a. Alternatively, in one example, the beta for the deblocking filter on / off decision for large - block boundaries can be greater than the beta for smaller - block boundaries.
[0392] b. Alternatively, in one example, the beta for the deblocking filter on / off decision for a large block boundary can be equal to the beta for a smaller block boundary.
[0393] 3. In one example, beta is an integer and can be based on
[0394] a. the video content (e.g., screen content or natural content)
[0395] b. a message signaled in the DPS / SPS / VPS / PPS / APS / picture header / strip header / slice group header / largest coding unit (LCU) / coding unit (CU) / LCU row / group of LCUs / TU / PU block / video coding unit
[0396] c. the position of the CU / PU / TU / block / video coding unit
[0397] d. the coding mode of a block containing samples along an edge
[0398] e. the transform matrix applied to a block containing samples along an edge
[0399] f. the block size of the current block and / or its neighboring blocks
[0400] g. the block shape of the current block and / or its neighboring blocks
[0401] h. an indication of the color format (e.g., 4:2:0, 4:4:4, RGB, or YUV)
[0402] i. the coding tree structure (e.g., binary tree or single tree)
[0403] j. the strip / slice group type and / or picture type
[0404] k. the color component (e.g., applicable only to Cb or Cr)
[0405] l. the temporal layer ID
[0406] m. the profile / level / tier of the standard
[0407] n. Alternatively, beta can be signaled to the decoder.
[0408] General
[0409] 15. The proposed method above can be applied under certain conditions.
[0410] a. In one example, the condition is that the color format is 4:2:0 and / or 4:2:2.
[0411] i. Alternatively, in addition, for the 4:4:4 color format, how to apply the deblocking filter to the two color chrominance components can follow the current design.
[0412] b. In one example, an indication of the use of the above method can be signaled at the sequence / picture / strip / slice / tile / video region level, such as in the SPS / PPS / picture header / strip header.
[0413] c. In one example, the use of the above method may depend on
[0414] ii. Video content (e.g., screen content or natural content)
[0415] iii. 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
[0416] iv. The position of the CU / PU / TU / block / video coding unit
[0417] v. The coding mode of the block containing samples along the edge
[0418] vi. The transform matrix applied to the block containing samples along the edge
[0419] vii. The block dimension of the current block and / or its neighboring blocks
[0420] viii. The block shape of the current block and / or its neighboring blocks
[0421] ix. An indication of the color format (e.g., 4:2:0, 4:4:4, RGB, or YUV)
[0422] x. The coding tree structure (e.g., binary tree or single tree)
[0423] xi. The strip / slice group type and / or picture type
[0424] xii. The color component (e.g., only applicable to Cb or Cr)
[0425] xiii. The temporal layer ID
[0426] xiv. The profile / level / tier of the standard
[0427] xv. Alternatively, m and / or n can be signaled to the decoder.
[0428] 5. Additional embodiments
[0429] The newly added text is shown in underlined bold italics. The deleted text is marked with [[ ]].
[0430] 5.1. Example #1 of Chroma QP in Deblocking
[0431] 8.8.3.6 Edge Filtering Process in One Direction
[0432] …
[0433] – Otherwise (cIdx is not equal to 0), the edge filtering process in the chroma coding block of the current coding unit specified by cIdx includes the following ordered steps:
[0434] 1. The variable cQpPicOffset is derived as follows:
[0435] cQpPicOffset = cIdx == 1? pps_cb_qp_offset : pps_cr_qp_offset (8-1065)
[0436] 8.8.3.6.3 Decision Process for Chroma Block Edges
[0437] …
[0438] Variable Qp Q and Qp P are set to be equal to the Qp Y value of the coding unit that includes the coding blocks containing samples q 0,0 and p 0,0 respectively.
[0439] Variable Qp C is derived as follows:
[0440] [[qPi = Clip3(0, 63, ((Qp Q + Qp P + 1) >> 1) + cQpPicOffset) (8-1132)
[0441] Qp C = ChromaQpTable[cIdx - 1][qPi] (8-1133)]]
[0442] qPi = (Qp Q + Qp P + 1) >> 1 (8-1132)
[0443] Qp C = ChromaQpTable[cIdx - 1][qPi] + cQpPicOffset (8-1133)
[0444] Note – The variable cQpPicOffset adjusts the value of pps_cb_qp_offset or pps_cr_qp_offset according to whether the filtered chrominance component is the cb component or the cr component. However, to avoid changing the amount of adjustment within the picture, the filtering process does not include adjustment of the slice_cb_qp_offset or slice_cr_qp_offset values, nor does it include adjustment of the CuQpOffset Cb , CuQpOffset Cr or CuQpOffset CbCr values (when cu_chroma_qp_offset_enabled_flag is equal to 1).
[0445] The value of the variable β′ is determined based on the quantization parameter Q according to the provisions in Table 8-18, and the quantization parameter Q is derived as follows:
[0446] Q = Clip3(0, 63, Qp C +(slice_beta_offset_div2 << 1)) (8-1134)
[0447] 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 .
[0448] The variable β is derived as follows:
[0449] β = β′ * (1 << (BitDepth C - 8)) (8-1135)
[0450] The variable t C ′s value is determined based on the quantization parameter Q according to the provisions in Table 8-18, and the quantization parameter Q is derived as follows:
[0451] Q = Clip3(0, 65, Qp C + 2 * (bS - 1)+(slice_tc_offset_div2 << 1)) (8-1136)
[0452] 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 .
[0453] The variable t C is derived as follows:
[0454] t C = (BitDepthC <10)?(t C ′ + 2)>>(10 - BitDepth C ):t C ′*(1<<(BitDepth C - 8))(8 - 1137)
[0455] 5.2. Example #2 of boundary strength derivation
[0456] 8.8.3.5 Process of deriving boundary filtering strength
[0457] The inputs to this process include:
[0458] – The picture sample array recPicture,
[0459] – The position (xCb, yCb) of the top - left sample of the current coding / decoding block relative to the top - left sample of the current picture,
[0460] – The variable nCbW specifying the width of the current coding / decoding block,
[0461] – The variable nCbH specifying the height of the current coding / decoding block,
[0462] – The variable edgeType specifying whether it is a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge,
[0463] – The variable cIdx specifying the color component of the current coding / decoding block,
[0464] – The two - dimensional (nCbW)x(nCbH) array edgeFlags.
[0465] The output of this process is the two - dimensional (nCbW)x(nCbH) array bS specifying the boundary filtering strength.
[0466] …
[0467] For xDi where i = 0..xN and yDj where j = 0..yN, the following applies:
[0468] – 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.
[0469] – Otherwise, the following applies:
[0470] …
[0471] – The variable bS[xD i [yDj It is derived as follows:
[0472] – If cIdx is equal to 0, and both sample points p0 and q0 are in the coding / decoding block where intra_bdpcm_flag is equal to 1, then bS[xD i [yD j is set to be equal to 0.
[0473] – Otherwise, if sample point p0 or q0 is in the coding / decoding block of the coding / decoding unit coded in the intra prediction mode, bS[xD i [yD j is set to be equal to 2.
[0474] – Otherwise, if the block edge is also the transform block edge, and sample point p0 or q0 is in the coding block where ciip_flag is equal to 1, then bS[xD i [yD j is set to be equal to 2.
[0475] – Otherwise, if the block edge is also the transform block edge, and sample point p0 or q0 is in the transform block containing one or more non-zero transform coefficient levels, then bS[xD i [yD j is set to be equal to 1.
[0476] – Otherwise, if the block edge is also the transform block edge, cIdx is greater than 0, and sample point p0 or q0 is in the transform unit where tu_joint_cbcr_residual_flag is equal to 1, then bS[xD i [yD j is set to be equal to 1.
[0477] – Otherwise, if the prediction mode of the coding sub-block containing sample point p0 is different from the prediction mode of the coding sub-block containing sample point q0 (i.e., one of the coding sub-blocks is coded in the IBC prediction mode while the other is coded in the inter prediction mode), then bS[xD i [yD j is set to be equal to 1.
[0478] – 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:
[0479] –
[0480] – The coding / decoding sub-block containing sample p0 and the coding / decoding sub-block containing sample q0 are both coded / decoded in IBC prediction mode, and the absolute difference between the horizontal or vertical components of the block vectors used in the prediction of the two coding / decoding sub-blocks is greater than or equal to 8 in units of 1 / 16 luma samples.
[0481] – For the prediction of the coding / decoding sub-block containing sample p0, a different reference picture or a different number of motion vectors is used compared to the prediction of the coding / decoding sub-block containing sample q0.
[0482] 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 index of reference picture list 0 or the index of reference picture list 1 is used to form the prediction, and also regardless of whether the index positions within the reference picture lists are different.
[0483] Note 2 – The number of motion vectors used to predict the coding / decoding sub-block (xSb, ySb) with top-left sample coverage is equal to PredFlagL0[xSb][ySb] + PredFlagL1[xSb][ySb].
[0484] – One motion vector is used to predict the coding / decoding sub-block containing sample p0, one motion vector is used to predict the coding / decoding sub-block containing sample q0, and the absolute difference between the horizontal or vertical components of the motion vectors used is greater than or equal to 8 in units of 1 / 16 luma samples.
[0485] – Two motion vectors and two different reference pictures are used to predict the coding / decoding sub-block containing sample p0, two motion vectors of the same two reference pictures are used to predict the coding / decoding sub-block containing sample q0, and the absolute difference between the horizontal or vertical components of the two motion vectors used in the prediction of the two coding / decoding sub-blocks of the same reference picture is greater than or equal to 8 in units of 1 / 16 luma samples.
[0486] – Two motion vectors of the same reference picture are used to predict the coding / decoding sub-block containing sample p0, two motion vectors of the same reference picture are used to predict the coding / decoding sub-block containing sample q0, and both of the following two conditions are true:
[0487] – The absolute difference between the horizontal or vertical components of the list 0 motion vectors used to predict 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 to predict the two coding / decoding sub-blocks is greater than or equal to 8 in units of 1 / 16 luma samples.
[0488] – The absolute difference between the horizontal or vertical component of the list 0 motion vector used in the prediction of the coding / decoding sub-block containing sample p0 and the list 1 motion vector used in the prediction of the coding / decoding sub-block containing sample q0 is greater than or equal to 8 in units of 1 / 16 luma samples, or the absolute difference between the horizontal or vertical component of the list 1 motion vector used in the prediction of the coding / decoding sub-block containing sample p0 and the list 0 motion vector used in the prediction of the coding / decoding sub-block containing sample q0 is greater than or equal to 8 in units of 1 / 16 luma samples.
[0489] – Otherwise, the variable bS[xD i [yD j is set equal to 0.
[0490] 5.3. Example #3 of boundary strength derivation
[0491] 8.8.3.5 Process for deriving boundary filtering strength
[0492] The inputs to this process include:
[0493] – The picture sample array recPicture,
[0494] – The position (xCb, yCb) of the top-left sample of the current coding / decoding block relative to the top-left sample of the current picture,
[0495] – The variable nCbW specifying the width of the current coding / decoding block,
[0496] – The variable nCbH specifying the height of the current coding / decoding block,
[0497] – The variable edgeType specifying whether to filter a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge,
[0498] – The variable cIdx specifying the color component of the current coding / decoding block,
[0499] – The two-dimensional (nCbW) x (nCbH) array edgeFlags.
[0500] The output of this process is the two-dimensional (nCbW) x (nCbH) array bS specifying the boundary filtering strength.
[0501] …
[0502] For xDi where i = 0..xN and yDj where j = 0..yN, the following applies:
[0503] – If edgeFlags[xD i [yD j is equal to 0, then the variable bS[xD i [yDj is set to be equal to 0.
[0504] – Otherwise, the following applies:
[0505] …
[0506] – Variable bS[xD i [yD j is derived as follows:
[0507] – If cIdx is equal to 0, and both sample points p0 and q0 are in the coding / decoding block where intra_bdpcm_flag is equal to 1, then bS[xD i [yD j is set to be equal to 0.
[0508] – Otherwise, if sample point p0 or q0 is in the coding / decoding block of the coding / decoding unit coded in the intra prediction mode, bS[xD i [yD j is set to be equal to 2.
[0509] – Otherwise, if the block edge is also a transform block edge, and sample point p0 or q0 is in the coding block where ciip_flag is equal to 1, then bS[xD i [yD j is set to be equal to 2.
[0510] – Otherwise, if the block edge is also a transform block edge, and sample point p0 or q0 is in the transform block containing one or more non-zero transform coefficient levels, then bS[xD i [yD j is set to be equal to 1.
[0511] – Otherwise, if the block edge is also a transform block edge, cIdx is greater than 0, and sample point p0 or q0 is in the transform unit where tu_joint_cbcr_residual_flag is equal to 1, then bS[xD i [yD j is set to be equal to 1.]]
[0512] – Otherwise, if the prediction mode of the coding / decoding sub-block containing sample point p0 is different from the prediction mode of the coding / decoding sub-block containing sample point q0 (i.e., one of the coding / decoding sub-blocks is coded in the IBC prediction mode and the other is coded in the inter prediction mode), then bS[xD i [yD j is set to be equal to 1.
[0513] – Otherwise, if cIdx is equal to 0, and one or more of the following conditions are true, then bS[xD i [yD jis set to be equal to 1:
[0514] – 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 prediction of the two coding / decoding sub-blocks is greater than or equal to 8 in units of 1 / 16 luma samples.
[0515] – For the prediction of the coding / decoding sub-block containing sample p0, a different reference picture or a different number of motion vectors is used compared to the prediction of the coding / decoding sub-block containing sample q0.
[0516] 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 index of reference picture list 0 or the index of reference picture list 1 is used to form the prediction, and also regardless of whether the index positions within the reference picture list are different.
[0517] Note 2 – The number of motion vectors used to predict the coding / decoding sub-block (xSb, ySb) with top-left sample coverage is equal to PredFlagL0[xSb][ySb] + PredFlagL1[xSb][ySb].
[0518] – One motion vector is used to predict the coding / decoding sub-block containing sample p0, one motion vector is used to predict the coding / decoding sub-block containing sample q0, and the absolute difference between the horizontal or vertical components of the motion vectors used is greater than or equal to 8 in units of 1 / 16 luma samples.
[0519] – Two motion vectors and two different reference pictures are used to predict the coding / decoding sub-block containing sample p0, two motion vectors of the same two reference pictures are used to predict the coding / decoding sub-block containing sample q0, and the absolute difference between the horizontal or vertical components of the two motion vectors used in the prediction of the two coding / decoding sub-blocks of the same reference picture is greater than or equal to 8 in units of 1 / 16 luma samples.
[0520] – Two motion vectors of the same reference picture are used to predict the coding / decoding sub-block containing sample p0, two motion vectors of the same reference picture are used to predict the coding / decoding sub-block containing sample q0, and both of the following two conditions are true:
[0521] – The absolute difference between the horizontal or vertical components of the list 0 motion vectors used to predict 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 to predict the two coding / decoding sub-blocks is greater than or equal to 8 in units of 1 / 16 luma samples.
[0522] – The absolute difference between the horizontal or vertical component of the list 0 motion vector used in the prediction of the coding / decoding sub-block containing sample p0 and the list 1 motion vector used in the prediction of the coding / decoding sub-block containing sample q0 is greater than or equal to 8 in units of 1 / 16 luma samples, or the absolute difference between the horizontal or vertical component of the list 1 motion vector used in the prediction of the coding / decoding sub-block containing sample p0 and the list 0 motion vector used in the prediction of the coding / decoding sub-block containing sample q0 is greater than or equal to 8 in units of 1 / 16 luma samples.
[0523] – Otherwise, the variable bS[xD i [yD j is set equal to 0.
[0524] 5.4. Example #4 regarding the luma deblocking filtering process
[0525] 8.8.3.6.1 Decision process for luma block edges
[0526] The inputs to this process include:
[0527] – The picture sample array recPicture,
[0528] – The position (xCb, yCb) of the top-left sample of the current coding / decoding block relative to the top-left sample of the current picture,
[0529] – The position (xBl, yBl) of the top-left sample of the current block relative to the top-left sample of the current coding / decoding block,
[0530] – The variable edge type specifying whether it is a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge to be filtered,
[0531] – The variable bS specifying the boundary filtering strength,
[0532] – The variable maxFilterLengthP specifying the maximum filter length,
[0533] – The variable maxFilterLengthQ specifying the maximum filter length.
[0534] The outputs of this process are:
[0535] – The variables dE, dEp, and dEq containing the decisions,
[0536] – The modified filter length variables maxFilterLengthP and maxFilterLengthQ,
[0537] – The variable t C .
[0538] …
[0539] The following ordered steps apply: ...
[0541] 1. When sidePisLargeBlk or sideQisLargeBlk is greater than 0, the following applies:
[0542] a. The variables dp0L and dp3L are derived and maxFilterLengthP is modified as follows:
[0543] – If sidePisLargeBlk equals 1, the following formula applies: dp0L = (dp0 + Abs(p 5,0 - 2*p 4,0 + p 3,0 ) + 1) >> 1 (8 - 1087)
[0544] dp3L = (dp3 + Abs(p 5,3 - 2*p 4,3 + p 3,3 ) + 1) >> 1 (8 - 1088)
[0545] – Otherwise, the following applies:
[0546] dp0L = dp0 (8 - 1089)
[0547] dp3L = dp3 (8 - 1090)
[0548] [[maxFilterLengthP = 3 (8 - 1091)]]
[0549]
[0550] b. The variables dq0L and dq3L are derived as follows:
[0551] – If sideQisLargeBlk equals 1, the following applies:
[0552] dq0L = (dq0 + Abs(q 5,0 - 2*q 4,0 + q 3,0 ) + 1) >> 1 (8 - 1092)
[0553] dq3L = (dq3 + Abs(q 5,3 - 2*q 4,3 + q 3,3 ) + 1) >> 1 (8 - 1093)
[0554] – Otherwise, the following applies:
[0555] dq0L = dq0 (8 - 1094)
[0556] dq3L = dq3 (8 - 1095)
[0557]
[0558] …
[0559] 2. The variables dE, dEp, and dEq are derived as follows:
[0560] …
[0561] 5.5. Example #5 regarding the chroma deblocking filter process
[0562] 8.8.3.6.3 Decision process for chroma block edges
[0563] This process is called only when ChromaArrayType is not equal to 0.
[0564] The inputs to this process include:
[0565] – The chroma picture sampling array recPicture,
[0566] – The chroma position (xCb, yCb) of the top - left sample of the current chroma coding / decoding block relative to the top - left chroma sample of the current picture,
[0567] – The chroma position (xBl, yBl) of the top - left sample of the current chroma block relative to the top - left sample of the current chroma coding / decoding block,
[0568] – The variable edge type that specifies whether it is a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge to be filtered,
[0569] – The variable cIdx that specifies the color component index,
[0570] – The variable cQpPicOffset that specifies the picture - level chroma quantization parameter offset,
[0571] – The variable bS that specifies the boundary filter strength,
[0572] – The variable maxFilterLengthCbCr.
[0573] The outputs of this process are
[0574] – The modified variable maxFilterLengthCbCr,
[0575] – The variable t C .
[0576] The derivation of the variable maxK is as follows:
[0577] – If edgeType is equal to EDGE_VER, the following applies:
[0578] maxK = (SubHeightC == 1)? 3 : 1(8 - 1124)
[0579] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:
[0580] maxK = (SubWidthC == 1)? 3 : 1(8 - 1125)
[0581] The values p of i = 0..maxFilterLengthCbCr and k = 0..maxK i and q i are derived as follows:
[0582] – If edgeType is equal to EDGE_VER, the following applies:
[0583] q i,k = recPicture[xCb + xBl + i][yCb + yBl + k] (8 - 1126)
[0584] p i,k = recPicture[xCb + xBl - i - 1][yCb + yBl + k] (8 - 1127)
[0585] subSampleC = SubHeightC (8 - 1128)
[0586] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:
[0587] q i,k = recPicture[xCb + xBl + k][yCb + yBl + i] (8 - 1129)
[0588] p i,k = recPicture[xCb + xBl + k][yCb + yBl - i - 1] (8 - 1130)
[0589] subSampleC = SubWidthC (8 - 1131)
[0590]
[0591]
[0592] The value of variable β′ is determined based on the quantization parameter Q according to the provisions in Table t-18, and the quantization parameter Q is derived as follows:
[0593] Q = Clip3(0, 63, Qp C +(slice_beta_offset_div2 << 1)) (8-1134)
[0594] 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.
[0595] Variable β is derived as follows:
[0596] β = β′ * (1 << (BitDepth C -8)) (8-1135)
[0597] Variable t C ′s value is determined based on the quantization parameter Q according to the provisions in Table 8-18, and the quantization parameter Q is derived as follows:
[0598] Q = Clip3(0, 65, Qp C +2 * (bS-1)+(slice_tc_offset_div2 << 1)) (8-1136)
[0599] 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.
[0600] Variable t C is derived as follows:
[0601] t C = (BitDepth C <10)? (t C ′ + 2) >> (10 - BitDepth C ): t C ′ * (1 << (BitDepth C -8)) (8-1137)
[0602] When maxFilterLengthCbCr is equal to 1 and bS is not equal to 2, maxFilterLengthCbCr is set to be equal to 0.
[0603] 5.6. Example #6 of Chrominance QP in Deblocking
[0604] 8.8.3.6.3 Decision Process for Chrominance Block Edges
[0605] This process is called only when ChromaArrayType is not equal to 0.
[0606] The inputs to this process include:
[0607] – chroma picture sampling array recPicture,
[0608] – chroma position (xCb, yCb) of the top - left sample of the current chroma coding block relative to the top - left chroma sample of the current picture,
[0609] – chroma position (xBl, yBl) of the top - left sample of the current chroma block relative to the top - left sample of the current chroma coding block,
[0610] – variable edgeType specifying whether it is a vertical (EDGE_VER) or horizontal (EDGE_HOR) edge for filtering,
[0611] – variable cIdx specifying the color component index,
[0612] – variable cQpPicOffset specifying the picture - level chroma quantization parameter offset,
[0613] – variable bS specifying the boundary filtering strength,
[0614] – variable maxFilterLengthCbCr.
[0615] The outputs of this process are
[0616] – modified variable maxFilterLengthCbCr,
[0617] – variable t C .
[0618] The derivation of variable maxK is as follows:
[0619] – If edgeType is equal to EDGE_VER, the following applies: maxK = (SubHeightC == 1)? 3 : 1(8 - 1124)
[0620] – Otherwise (edgeType is equal to EDGE_HOR), the following applies: maxK = (SubWidthC == 1)? 3 : 1(8 - 1125)
[0621] The values of p i and q i for i = 0..maxFilterLengthCbCr and k = 0..maxK are derived as follows:
[0622] – If edgeType is equal to EDGE_VER, the following applies:
[0623] q i,k = recPicture[xCb + xBl + i][yCb + yBl + k] (8 - 1126)
[0624] p i,k = recPicture[xCb + xBl - i - 1][yCb + yBl + k] (8 - 1127)
[0625] subSampleC = SubHeightC (8 - 1128)
[0626] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:
[0627] q i,k = recPicture[xCb + xBl + k][yCb + yBl + i] (8 - 1129)
[0628] p i,k = recPicture[xCb + xBl + k][yCb + yBl - i - 1] (8 - 1130)
[0629] subSampleC = SubWidthC (8 - 1131)
[0630] The variables Qp Q and Qp P are set to be equal to the Qp Y value of the codec unit that includes the coding blocks containing the samples q 0,0 and p 0,0 respectively.
[0631]
[0632] The variable Qp C is derived as follows:
[0633] [[qPi = Clip3(0, 63, ((Qp Q + Qp P + 1) >> 1) + cQpPicOffset) (8 - 1132)]]
[0634]
[0635] Qp C = ChromaQpTable[cIdx - 1][qPi] (8 - 1133)
[0636] Note – The variable cQpPicOffset adjusts the value of pps_cb_qp_offset or pps_cr_qp_offset according to whether the filtered chrominance component is the Cb component or the Cr component. However, to avoid changing the amount of adjustment within the picture, the filtering process does not include adjustment of the value of slice_cb_qp_offset or slice_cr_qp_offset, nor does it include adjustment of the value of CuQpOffset Cb or CuQpOffset Cr or CuQpOffset CbCr (when cu_chroma_qp_offset_enabled_flag is equal to 1).
[0637] …
[0638] 5.7. Example #7 on Chrominance QP in Deblocking
[0639] 8.8.3.6.3 Decision Process at Chrominance Block Edge
[0640] This process is only called when ChromaArrayType is not equal to 0.
[0641] The inputs to this process include:
[0642] – The chrominance picture sampling array recPicture,
[0643] – Specify the chrominance position (xCb, yCb) of the top-left sample of the current chrominance coding block relative to the top-left chrominance sample of the current picture,
[0644] – …
[0645] The output of this process is
[0646] – The modified variable maxFilterLengthCbCr,
[0647] – The variable t C .
[0648] The derivation of the variable maxK is as follows:
[0649] – If edgeType is equal to EDGE_VER, the following applies:
[0650] maxK = (SubHeightC == 1)? 3 : 1(8 - 1124)
[0651] – Otherwise (edgeType is equal to EDGE_HOR), the following applies:
[0652] maxK = (SubWidthC == 1)? 3 : 1(8 - 1125)
[0653] Values of p when i = 0..maxFilterLengthCbCr and k = 0..maxK i and q i are derived as follows:
[0654] – If edgeType equals EDGE_VER, the following applies:
[0655] q i,k = recPicture[xCb + xBl + i][yCb + yBl + k] (8 - 1126)
[0656] p i,k = recPicture[xCb + xBl - i - 1][yCb + yBl + k] (8 - 1127)
[0657] subSampleC = SubHeightC (8 - 1128)
[0658] – Otherwise (edgeType equals EDGE_HOR), the following applies:
[0659] q i,k = recPicture[xCb + xBl + k][yCb + yBl + i] (8 - 1129)
[0660] p i,k = recPicture[xCb + xBl + k][yCb + yBl - i - 1] (8 - 1130)
[0661] subSampleC = SubWidthC (8 - 1131)
[0662] [[Variable Qp Q and Qp P are set equal to the Qp of the coding unit Y that includes the coding blocks containing samples q 0,0 and p 0,0 respectively.]]
[0663]
[0664] Variable Qp C is derived as follows:
[0665] qPi = Clip3(0, 63, ((Qp Q + Qp P+1) >> 1) + cQpPicOffset) (8 - 1132)
[0666] Qp C = ChromaQpTable[cIdx - 1][qPi] (8 - 1133)
[0667] Note – The variable cQpPicOffset adjusts the value of pps_cb_qp_offset or pps_cr_qp_offset according to whether the filtered chrominance component is the Cb component or the Cr component. However, to avoid changing the amount of adjustment within the picture, the filtering process does not include adjustment of the values of slice_cb_qp_offset or slice_cr_qp_offset, nor does it include adjustment of the values of CuQpOffset Cb 、CuQpOffset Cr or CuQpOffset CbCr values (when cu_chroma_qp_offset_enabled_flag is equal to 1).
[0668] The value of variable β′ is determined according to the provisions in Table 8 - 18 based on the quantization parameter Q, and the quantization parameter Q is derived as follows:
[0669] Q = Clip3(0, 63, Qp C +(slice_beta_offset_div2 << 1)) (8 - 1134)
[0670] where slice_beta_offset_div2 is the value of the syntax element slice_beta_offset_div2 of the slice containing sample q 0,0 .
[0671] Variable β is derived as follows:
[0672] β = β′ * (1 << (BitDepth C - 8)) (8 - 1135)
[0673] Variable t C ′s value is determined according to the provisions in Table 8 - 18 based on the quantization parameter Q, and the quantization parameter Q is derived as follows:
[0674] Q = Clip3(0, 65, Qp C + 2 * (bS - 1)+(slice_tc_offset_div2 << 1)) (8 - 1136)
[0675] where slice_tc_offset_div2 is the slice containing sample q0,0 The value of the syntax element slice_tc_offset_div2 of the strip.
[0676] 5.8. Example #8 regarding the chroma QP in deblocking
[0677] When making a filtering decision for the three depicted samples (solid circles), the QP of the luma CU covering the center position of the chroma CU including the three samples is selected. Thus, for the first, second, and third chroma samples (as Figure 11 shown), only the QP of CU Y 3 is utilized respectively.
[0678] In this way, how to select the luma CU for chroma quantization / dequantization processing is aligned with the luma coefficient for chroma filter decision processing.
[0679] 5.9. Example #9 regarding the QP of the block for JCCR encoding / decoding
[0680] 8.7.3 Scaling process of transform coefficients
[0681] The inputs to this process include:
[0682] – Specify the luma position (xTbY, yTbY) of the top-left sample of the current luma transform block relative to the top luma sample of the current picture,
[0683] – A variable nTbW specifying the width of the transform block,
[0684] – A variable nTbH specifying the height of the transform block,
[0685] – A variable cIdx specifying the color component of the current block,
[0686] – A variable bitDepth specifying the bit depth of the current color component.
[0687] The output of this process is an (nTbW)x(nTbH) array d of scaled transform coefficients with elements d[x][y].
[0688] The quantization parameter qP is derived as follows:
[0689] – If cIdx is equal to 0 and transform_skip_flag[xTbY][yTbY] is equal to 0, the following applies:
[0690] qP = Qp′ Y (8 - 950)
[0691] – Otherwise, if cIdx is equal to 0 (and transform_skip_flag[xTbY][yTbY] is equal to 1), then the following applies:
[0692] qP = Max(QpPrimeTsMin, Qp′ Y ) (8 - 951)
[0693] – Otherwise, if TuCResMode[xTbY][yTbY] Not Equal to 0 [[is equal to 2]], then the following applies:
[0694] qP = Qp′ CbCr (8 - 952)
[0695] – Otherwise, if cIdx is equal to 1, then the following applies:
[0696] qP = Qp′ Cb (8 - 953)
[0697] – Otherwise (cIdx is equal to 2), the following applies:
[0698] qP = Qp′ Cr (8 - 954)
[0699] 6. Example Implementations of the Disclosed Technology
[0700] Figure 12 is a block diagram of video processing apparatus 1200. Apparatus 1200 can be used to implement one or more of the methods described herein. Apparatus 1200 can be embodied in a smart phone, a tablet computer, a computer, an Internet of Things (IoT) receiver, etc. Apparatus 1200 can include one or more processors 1202, one or more memories 1204, and video processing hardware 1206. Processor 1202 can be configured to implement one or more of the methods described in this document. Memory (memories) 1204 can be used to store data and code for implementing the methods and techniques described herein. Video processing hardware 1206 can be used to implement some of the techniques described in this document in hardware circuitry and can be part of processor 1202 (e.g., a graphics processing unit core GPU or other signal processing circuitry) partially or completely.
[0701] In this document, the term "video processing" may refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during the conversion from the pixel representation of a video to the corresponding bitstream representation, and vice versa. As defined by the syntax, the bitstream representation of the current video block may, for example, correspond to bits located at different positions within the bitstream or extended at different positions within the bitstream. For example, a macroblock may be encoded based on the transformed and encoded error residual values, and may also use bits in the header and other fields in the bitstream.
[0702] It should be understood that by allowing the use of the techniques disclosed in this document, the disclosed methods and techniques will be beneficial to video encoder and / or decoder embodiments incorporated in video processing apparatuses such as smartphones, laptops, desktop computers, and similar devices.
[0703] Figure 13 is a flowchart of an example method 1300 of video processing. Method 1300 includes, at 1310, performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that when a chrominance quantization parameter (QP) table is used to derive the parameters of the deblocking filter, the processing of the chrominance QP table is performed on each chrominance QP value.
[0704] Some embodiments may be described using the following clause-based format.
[0705] 1. A video processing method, comprising:
[0706] performing a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that when a chrominance quantization parameter (QP) table is used to derive the parameters of the deblocking filter, the processing of the chrominance QP table is performed on each chrominance QP value.
[0707] 2. The method of clause 1, wherein after the chrominance QP table processing, a chrominance QP offset is added to each chrominance QP value.
[0708] 3. The method of any one of clauses 1-2, wherein the chrominance QP offset is added to the value output by the chrominance QP table.
[0709] 4. The method of any one of clauses 1-2, wherein the chrominance QP offset is not considered as an input to the chrominance QP table.
[0710] 5. The method of clause 2, wherein the chrominance QP offset is at the picture level or the video unit level.
[0711] 6. A video processing method, comprising:
[0712] Perform a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and wherein the chrominance QP offset is at the picture / slice / tile / sub-picture level.
[0713] 7. The method of clause 6, wherein the chrominance QP offset used in the deblocking filter is associated with the coding / decoding method applied at the boundary of the video unit.
[0714] 8. The method of clause 7, wherein the coding / decoding method is a Joint Coding of Chrominance Residuals (JCCR) method.
[0715] 9. A video processing method, comprising:
[0716] Perform a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and wherein information related to the same luma coding / decoding unit is used in the deblocking filter and is used to derive the chrominance QP offset.
[0717] 10. The method of clause 9, wherein the same luma coding / decoding unit covers corresponding luma samples at the center position of the video unit, and wherein the video unit is a chrominance coding / decoding unit.
[0718] 11. The method according to clause 9, wherein a scaling process is applied to the video unit, and wherein one or more parameters of the deblocking filter depend at least in part on the quantization / dequantization parameters of the scaling process.
[0719] 12. The method of clause 11, wherein the quantization / dequantization parameters of the scaling process include the chrominance QP offset.
[0720] 13. The method of any one of clauses 9 - 12, wherein the luma samples in the video unit are on the P side or the Q side.
[0721] 14. The method according to clause 13, wherein the information related to the same luma coding / decoding unit depends on the relative position of the coding / decoding unit with respect to the same luma coding / decoding unit.
[0722] 15. A video processing method, comprising:
[0723] Perform a conversion between a video unit and a bitstream representation of the video unit, wherein, during the conversion, a deblocking filter is used at the boundary of the video unit such that a chrominance QP offset is used in the deblocking filter, and wherein, in the bitstream representation, an indication signaling the enabling of the use of the chrominance QP offset is signaled.
[0724] 16. The method according to clause 15, wherein in response to detecting one or more flags, the indication is signaled conditionally.
[0725] 17. The method according to clause 16, wherein the one or more flags are related to a JCCR enable flag or a chroma QP offset enable flag.
[0726] 18. The method according to clause 15, wherein the indication is signaled based on a derivation.
[0727] 19. A video processing method, comprising:
[0728] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein during the conversion, a deblocking filter is used at a boundary of the video unit such that a chroma QP offset is used in the deblocking filter, and wherein the chroma QP offset used in the deblocking filter is the same as whether a JCCR coding / decoding method is applied at the boundary of the video unit or a method different from the JCCR coding / decoding method is applied at the boundary of the video unit.
[0729] 20. A video processing method, comprising:
[0730] Performing a conversion between a video unit and a bitstream representation of the video unit, wherein during the conversion, a deblocking filter is used at a boundary of the video unit such that a chroma QP offset is used in the deblocking filter, and wherein a boundary strength (BS) of the deblocking filter is calculated without comparing the number of reference pictures and / or motion vectors (MVs) associated with a video unit at a P-side boundary with the number of reference pictures and / or motion vectors (MVs) associated with a video unit at a Q-side.
[0731] 21. The method of clause 20, wherein the deblocking filter is disabled under one or more conditions.
[0732] 22. The method according to clause 21, wherein the one or more conditions are associated with: the magnitude of a motion vector (MV) or a threshold.
[0733] 23. The method according to clause 22, wherein the threshold is associated with at least one of the following: i. the content of the video unit, ii. a message signaled in 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, iii. the position of the CU / PU / TU / block / video coding unit, iv. the coding mode of a block having samples along the boundary, v. the transform matrix applied to a video unit having samples along the boundary, vi. the shape or dimension of the video unit, vii. an indication of the color format, viii. the coding tree structure, ix. the strip / slice group type and / or picture type, x. the color component, xi. the temporal layer ID, or xii. the profile / level / tier of the standard.
[0734] 24. The method according to clause 20, wherein different QP offsets are used for video units coded in TS and video units not coded in TS.
[0735] 25. The method of clause 20, wherein the QP used in the luminance filtering step is related to the QP used in the scaling process of the luminance block.
[0736] 26. A video decoding device, comprising a processor configured to implement the method of one or more of clauses 1 to 25.
[0737] 27. A video encoding device, comprising a processor configured to implement the method of one or more of clauses 1 to 25.
[0738] 28. A computer program product having computer code stored thereon, which when executed by a processor causes the processor to implement the method of any one of clauses 1 to 25.
[0739] 29. The method, device or system described in this document.
[0740] Figure 14 is a block diagram showing an example video processing system 1400 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 1400. System 1400 may include an input 1402 for receiving video content. The video content may be received in a raw or uncompressed format, such as 8- or 10-bit multi-component pixel values, or may be in a compressed or coded format. Input 1902 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, passive optical network (PON), etc., and wireless interfaces such as Wi-Fi or cellular interfaces.
[0741] System 1400 may include an encoding / decoding component 1404, which may implement various encoding or coding methods described in this document. The encoding / decoding component 1404 may reduce the average bit rate of the video from the input 1402 to the output of the encoding / decoding component 1404 to produce a bitstream representation of the video. Thus, encoding / decoding techniques are sometimes referred to as video compression or video transcoding techniques. The output of the encoding / decoding component 1404 may be stored or transmitted via a connected communication (as represented by component 1406). Component 1408 may use the stored or transmitted bitstream (or encoded / decoded) representation of the video received at the input 1402 to generate pixel values or a displayable video that is sent to the display interface 1410. The process of generating a user-viewable video from the 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 at the encoder, and the corresponding decoding tools or operations that reverse the results of encoding / decoding will be performed by the decoder.
[0742] 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 embodied in various electronic devices, such as a mobile phone, a laptop computer, a smartphone, or other devices capable of performing digital data processing and / or video display.
[0743] Figure 15 is a flowchart representation of a video processing method 1500 according to the present technology. Method 1500 includes, at operation 1510, performing a conversion between a block of a chrominance component of a video and a bitstream representation of the video. During the conversion, a deblocking filtering process is applied to at least some samples along the edges of the block, and a chrominance quantization parameter (QP) offset is added to the output from a chrominance QP table to determine the parameters of the deblocking filtering process.
[0744] In some embodiments, the chrominance QP offset is indicated by a syntax element at least at the picture level or video unit level in the bitstream representation. In some embodiments, a video unit includes a slice, a picture, a tile, a sub-picture, or a block. In some embodiments, the chrominance QP offset includes at least pps_cb_qp_offset and / or pps_cr_qp_offset. In some embodiments, the QP clipping process is disabled for the input to the chrominance QP table. In some embodiments, the chrominance component includes the Cr component of the video. In some embodiments, the chrominance component includes the Cb component of the video.
[0745] Figure 16is a flowchart representation of a video processing method 1600 according to the present technology. The method 1600 includes, at operation 1610, for the conversion between a block of a chrominance component of a video and a bitstream representation of the video, determining whether or how to apply a filtering process to an edge of the block according to a rule based on first quantization information of a first video region of samples on one side of the edge including the edge and / or second quantization information of a second video region of samples on the other side of the edge including the edge. The rule is based on an encoding / decoding mode applicable to the block for encoding samples on one side of the edge or the other side of the edge. The rule provides for using multiple QP offsets at different video unit levels to determine the first quantization information or the second quantization information. The method 1600 further includes, at operation 1620, performing the conversion based on the determination.
[0746] In some embodiments, the different video unit levels include at least picture level, slice level, tile level, or sub-picture level. In some embodiments, the multiple QP offsets include an offset for the Cb component of the video. In some embodiments, the multiple QP offsets include an offset for the Cr component of the video.
[0747] In some embodiments, the rule provides for the selection of the multiple QP offsets based on the encoding / decoding mode. In some embodiments, the encoding / decoding mode includes a joint chrominance residual (JCCR) encoding / decoding mode. In some embodiments, in the case where the block is encoded / decoded in the JCCR encoding / decoding mode, the multiple QP offsets include at least a picture level QP offset or a slice level QP offset. In some embodiments, in the case where at least one of the first video region or the second video region is encoded / decoded using the JCCR encoding / decoding mode, the multiple QP offsets for determining the threshold β and tC of the filtering process include the QP offset values of the JCCR encoding / decoding mode.
[0748] In some embodiments, information of a corresponding block of the luminance component is used to determine the first quantization information of the first video region or the second quantization information of the second video region. In some embodiments, to filter a current chrominance sample in a block of the chrominance component, information of a luminance encoding / decoding unit covering the luminance sample corresponding to the current chrominance sample is used to determine the first quantization information of the first video region or the second quantization information of the second video region.
[0749] In some embodiments, whether or how to apply the filtering process is based on a scaling process applicable to the block. In some embodiments, the first quantization information of the first video region or the second quantization information of the second video region for determining the threshold β and tC is based on quantization information used in the scaling process. In some embodiments, one or more encoding / decoding unit level QP offsets are used to determine the quantization information used in the scaling process.
[0750] In some embodiments, the applicability of the method is based on whether the block is on one side of the edge or on the other side of the edge. In some embodiments, whether the information of the corresponding block of the luminance component is used in the filtering process is based on the position of the block. In some embodiments, in the case where the block is on the other side of the edge, the information of the corresponding block of the luminance component is used in the filtering process. In some embodiments, in the case where the block is on one side of the edge, the information of the corresponding block of the luminance component is used in the filtering process.
[0751] Figure 17 is a flowchart representation of a video processing method 1700 according to the present technology. Method 1700 includes, at operation 1710, for the conversion between the current block of the video and the bitstream representation of the video, determining whether to enable the use of the chrominance quantization parameter (QP) offset for the current block according to the syntax elements at the level of the video unit. The video unit includes the current block of the video and a second block. Method 1700 further includes, at operation 1720, performing the conversion based on the determination.
[0752] In some embodiments, the video unit includes a slice. In some embodiments, the video unit further includes a picture, a tile, or a sub-picture.
[0753] In some embodiments, the syntax elements are conditionally included in the bitstream representation at the level of the video unit. In some embodiments, based on whether the joint coding and decoding mode of the chrominance residuals is enabled, the syntax elements are conditionally included in the bitstream representation. In some embodiments, based on a second syntax element at the picture level indicating the use of the chrominance quantization parameter (QP) offset at the block level, the syntax elements are included in the bitstream representation at the level of the video unit. In some embodiments, the syntax elements are omitted from the bitstream representation, and in the case where the second syntax element at the picture level indicates that the use of the chrominance quantization parameter (QP) offset at the block level is prohibited, the use of the chrominance quantization parameter (QP) offset at the block level is determined to be prohibited. In some embodiments, the use of the chrominance quantization parameter (QP) offset for the current block is determined based on the syntax elements at the slice level and the second syntax element at the picture level.
[0754] Figure 18 is a flowchart representation of a video processing method 1800 according to the present technology. Method 1800 includes, at operation 1810, performing the conversion between the video including a first chrominance component and a second chrominance component and the bitstream representation of the video. According to the rule, the residuals of the first chrominance block of the first chrominance component and the second chrominance block of the second chrominance component are jointly coded and decoded in the bitstream representation using the coding and decoding mode. The rule specifies the manner of deriving the quantization parameter (QP) for the conversion independently of the coding and decoding mode. In some embodiments, the QP for the conversion is derived based on the QP offset signaled at the picture level or the slice level in the bitstream representation.
[0755] Figure 19 It is a flowchart representation of a video processing method 1900 according to the present technology. The method 1900 includes, at operation 1910, performing a conversion between a first block of a video and a bitstream representation of the video. The video has a color format with multiple color components, and the first block is associated with a first color component of the video. During the conversion, a deblocking filtering process is applied to at least some samples along the edge of the first block. The method 1900 includes, at operation 1920, performing subsequent conversions between blocks associated with the remaining color components of the video and the bitstream representation of the video. During the subsequent conversions, the deblocking filtering process is applied to at least some samples along the edge of each block in the same manner as the conversion of the first block.
[0756] In some embodiments, the color format is 4:4:4. In some embodiments, in the red-green-blue (RGB) color space, the color format is 4:4:4. In some embodiments, the color format is 4:2:2, and the deblocking filtering process is applied in the vertical direction. In some embodiments, the deblocking filtering process includes a decision process and / or a filtering process.
[0757] Figure 20 It is a flowchart representation of a video processing method 2000 according to the present technology. The method 2000 includes, at operation 2010, for the conversion between a video and a bitstream representation of the video, determining a boundary strength of a boundary between two blocks of the video. The boundary strength is determined regardless of whether any one of the two blocks is encoded in a joint chroma residual coding (JCCR) mode. The method 2000 includes, at operation 2020, performing the conversion based on the determination.
[0758] In some embodiments, in the case where one of the two blocks is encoded in the JCCR mode, that block is considered to be encoded in a non-JCCR mode for determining the boundary strength. In some embodiments, the boundary strength is determined independently of the use of JCCR for the two blocks.
[0759] Figure 21 It is a flowchart representation of a video processing method 2100 according to the present technology. The method 2100 includes, at operation 2110, for the conversion between a video and a bitstream representation of the video, determining a boundary strength of a boundary between a first block and a second block. The determination is performed without comparing the information of the first block with the corresponding information of the second block. The information includes the number of reference pictures and / or motion vectors of the corresponding blocks, and the boundary strength is used to determine whether the deblocking filtering process is applicable to the boundary. The method 2100 further includes, at operation 2120, performing the conversion based on the determination.
[0760] In some embodiments, the boundary strength indicates that the deblocking process is disabled when the reference picture of the first block is different from that of the second block. In some embodiments, the boundary strength indicates that the deblocking process is disabled when the number of motion vectors of the first block is different from that of the second block.
[0761] In some embodiments, when the difference between one or more motion vectors of the first block and one or more motion vectors of the second block is greater than or equal to a threshold, which is an integer, the boundary strength is set to 1. In some embodiments, one or more motion vectors of the first block are represented as MVP[0] and MVP[1], and one or more motion vectors of the second block are represented as MVQ[0] and MVQ[1]. The difference is greater than or equal to the threshold Th when (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). In some embodiments, the difference is greater than or equal to the threshold Th when (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). In some embodiments, the difference value is greater than or equal to the threshold Th when (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). In some embodiments, the difference value is greater than or equal to the threshold Th when (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). In some embodiments, when the difference between the motion vectors of the first block and the motion vectors of the second block is less than or equal to a threshold, which is an integer, the boundary strength is set to 0. In some embodiments, the threshold is 4, 8, or 16. In some embodiments, the threshold is based on the characteristics of the video.
[0762] In some embodiments, the applicability of the method is determined based on conditions. In some embodiments, the method is applicable to cases where the first block and the second block are not coded / decoded using an intra prediction mode. In some embodiments, the method is applicable to cases where the first block and the second block have zero coefficients for the luminance component. In some embodiments, the method is applicable to cases where the first block and the second block are not coded / decoded using a combined inter and intra prediction mode. In some embodiments, the method is applicable to cases where the first block and the second block are coded / decoded using the same prediction mode, and the same prediction mode is the intra block copy prediction mode or the inter prediction mode.
[0763] Figure 22 is a flowchart representation of a video processing method 2200 according to the present technology. Method 2200 includes, in operation 2210, for the conversion between a video block of a video and a bitstream representation of the video, determining a quantization parameter (QP) for applying deblocking filtering to the video block according to a rule. The rule specifies using a first QP for the determination in cases where the video block is coded / decoded using the transform skip (TS) mode, in which the residual of the video block is coded in the bitstream representation by skipping the application of a transform. In cases where the video block is coded / decoded using a non-transform skip mode, a second QP different from the first QP is used for the determination, in which the residual of the video block is coded in the bitstream representation after the application of a transform. Method 2200 further includes, in operation 2220, performing the conversion based on the determination.
[0764] In some embodiments, for the conversion of a luminance block, the filtering process applicable to the luminance block is based on the QP of the scaling process applied to the luminance block. In some embodiments, the QP for determining whether the filtering process is applicable to the luminance block is determined based on the clipping range of the TS mode.
[0765] Figure 23 is a flowchart representation of a video processing method 2300 according to the present technology. Method 2300 includes, in operation 2310, for the conversion between a video block of a video and a bitstream representation of the video, determining a gradient for determining the applicability of a deblocking filtering process to at least some samples of an edge of the video block according to a rule. The rule specifies the manner of determining the gradient independently of the size of the video block. Method 2300 further includes, in operation 2320, performing the conversion based on the determination.
[0766] In some embodiments, a threshold for determining whether to enable a deblocking filtering process is adjusted for blocks having different boundary sizes, and the threshold is an integer. In some embodiments, the threshold is based on a quantization parameter determined for the deblocking filtering process. In some embodiments, the threshold for a block with a large boundary is less than a second threshold for a block with a small boundary. In some embodiments, the threshold for a block with a large boundary is greater than a second threshold for a block with a small boundary. In some embodiments, the threshold for a block with a large boundary is equal to a second threshold for a block with a small boundary. In some embodiments, the threshold is based on characteristics of the video.
[0767] In some embodiments, the applicability of one or more of the above methods is based on characteristics of the video. In some embodiments, the characteristics of the video include the content of the video. In some embodiments, the characteristics of the video include information signaled in a decoder parameter set, a slice parameter set, a video parameter set, a picture parameter set, an adaptive parameter set, a picture header, a slice header, a picture group header, a largest coding unit (LCU), a coding unit, an LCU row, a group of LCUs, a transform unit, a picture unit, or a video coding unit in the bitstream representation. In some embodiments, the characteristics of the video include the position of a coding unit, a picture unit, a transform unit, a block, or a video coding unit in the video. In some embodiments, the characteristics of the video include the coding mode of a block that includes at least some samples along an edge. In some embodiments, the characteristics of the video include a transform matrix that is applied to a block that includes at least some samples along an edge. In some embodiments, the characteristics of the current block or neighboring blocks of the current block include the dimensions of the current block or the dimensions of the neighboring blocks of the current block. In some embodiments, the characteristics of the current block or neighboring blocks of the current block include the shape of the current block or the shape of the neighboring blocks of the current block. In some embodiments, the characteristics of the video include an indication of the color format of the video. In some embodiments, the characteristics of the video include the coding tree structure applicable to the video. In some embodiments, the characteristics of the video include the slice type, picture group type, or picture type of the video. In some embodiments, the characteristics of the video include the color components of the video. In some embodiments, the characteristics of the video include the temporal layer identifier of the video. In some embodiments, the characteristics of the video include the profile, level, or tier of the video standard.
[0768] In some embodiments, the transformation includes encoding the video into a bitstream representation. In some embodiments, the transformation includes decoding the bitstream representation into the video.
[0769] Figure 24 is a block diagram illustrating an example video coding system 100 that can utilize the techniques of the present disclosure.
[0770] As Figure 24As shown, the video encoding and decoding system 100 may include a source device 110 and a destination device 120. The source device 110 generates encoded video data, and the source device 110 may be referred to as a video encoding device. The destination device 120 may decode the encoded video data generated by the source device 110, and the source device 110 may be referred to as a video decoding device.
[0771] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.
[0772] The video source 112 may include sources such as a video capture device, an interface for receiving video data from a video content provider, and / or a computer graphics system for generating video data, or a combination of these sources. The video data may include one or more pictures. The video encoder 114 encodes the video data from the video source 112 to generate a bitstream. The bitstream may include a sequence of bits that form a coded representation of the video data. The bitstream may include coded pictures and associated data. The coded picture is a coded representation of a picture. The associated data may include sequence parameter sets, picture parameter sets, and other syntax structures. The I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. The encoded video data may be directly transmitted to the destination device 120 via the I / O interface 116 over a network 130a. The encoded video data may also be stored on a storage medium / server 130b for access by the destination device 120.
[0773] The destination device 120 may include an I / O interface 126, a video decoder 124, and a display device 122.
[0774] The I / O interface 126 may include a receiver and / or a modem. The I / O interface 126 may obtain the encoded video data from the source device 110 or the storage medium / server 130b. The video decoder 124 may decode the encoded video data. The display device 122 may display the decoded video data to a user. The display device 122 may be integrated with the destination device 120 or may be external to the destination device 120, and the destination device 120 is configured to interface with an external display device.
[0775] 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.
[0776] Figure 25 is a block diagram showing an example of a video encoder 200, and the video encoder 200 may be Figure 24 the video encoder 114 in the system 100 shown.
[0777] The video encoder 200 may be configured to perform any or all of the techniques of the present disclosure. In Figure 25 an example, the video encoder 200 includes a plurality of functional components. The techniques described in the present disclosure may be shared among various components of the video encoder 200. In some examples, a processor may be configured to perform any or all of the techniques described in the present disclosure.
[0778] The functional components of the video encoder 200 may include a splitting unit 201, a prediction unit 202, 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 codec unit 214. The prediction unit 202 may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205, and an intra prediction unit 206.
[0779] In other examples, the video encoder 200 may include more, fewer, or different functional components. In an example, the prediction unit 202 may include an intra block copy (IBC) unit. The IBC unit may perform prediction in the IBC mode, where at least one reference picture is the picture in which the current video block is located.
[0780] In addition, some components, such as the motion estimation unit 204 and the motion compensation unit 205, may be highly integrated, but are shown separately in the Figure 5 example for purposes of explanation.
[0781] The splitting unit 201 may split a picture into one or more video blocks. The video encoder 200 and the video decoder 300 may support various video block sizes.
[0782] The mode selection unit 203 may select one of the coding modes (intra or inter) based on, for example, an error result, and provide the resulting intra or inter coded block to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In some examples, the mode selection unit 203 may select a combination of intra and inter prediction (CIIP) mode, where the prediction is based on an inter prediction signal and an intra prediction signal. In the case of inter prediction, the mode selection unit 203 may also select the resolution of the motion vector for the block (e.g., sub-pixel or integer pixel precision).
[0783] To perform inter prediction on a current video block, the motion estimation unit 204 may generate motion information for the current video block by comparing one or more reference frames from buffer 213 with the current video block. The motion compensation unit 205 may determine a predicted video block for the current video block based on motion information and decoded samples of pictures from buffer 213 other than the picture associated with the current video block.
[0784] The motion estimation unit 204 and the motion compensation unit 205 may perform different operations on the current video block, e.g., depending on whether the current video block is in an I-slice, a P-slice, or a B-slice.
[0785] In some examples, the motion estimation unit 204 may perform single prediction on the current video block, and the motion estimation unit 204 may search for a reference video block of the current video block in the reference pictures of list 0 or list 1. The motion estimation unit 204 may then generate a reference index indicating the reference picture in list 0 or list 1 that contains the reference video block and a motion vector indicating the spatial displacement between the current video block and the reference video block. The motion estimation unit 204 may output the reference index, a prediction direction indicator, and the motion vector as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block for the current block based on the reference video block indicated by the motion information of the current video block.
[0786] In other examples, the motion estimation unit 204 may perform dual prediction on the current video block. The motion estimation unit 204 may search for a reference video block of the current video block in the reference pictures in list 0 and may also search for another reference video block of the current video block in the reference pictures in list 1. The motion estimation unit 204 may then generate a reference index that indicates the reference pictures in list 0 and list 1 that contain the reference video block and a motion vector indicating the spatial displacement between the reference video block and the current video block. The motion estimation unit 204 may output the reference index and the motion vector of the current video block as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block for the current video block based on the reference video block indicated by the motion information of the current video block.
[0787] In some examples, the motion estimation unit 204 may output a complete set of motion information for the decoder's decoding process.
[0788] In some examples, the motion estimation unit 204 may not output a complete set of motion information for the current video. Instead, the motion estimation unit 204 may signal the motion information of the current video block by referring to the motion information of another video block. For example, the motion estimation unit 204 may determine that the motion information of the current video block is similar enough to the motion information of an adjacent video block.
[0789] In one example, the motion estimation unit 204 may indicate a value in a syntax structure associated with the current video block, and the value indicates to the video decoder 300 that the current video block has the same motion information as another video block.
[0790] 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.
[0791] As described above, the video encoder 200 may predictively signal motion vectors. Two examples of predictive signaling techniques that may be implemented by the video encoder 200 include advanced motion vector prediction (AMVP) and merge mode signaling.
[0792] 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.
[0793] The residual generation unit 207 may generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) the predicted video block of the current video block from the current video block. The residual data for the current video block may include a residual video block corresponding to different sample components of the samples in the current video block.
[0794] In other examples, such as in the skip mode, the current video block may not have residual data for the current video block, and the residual generation unit 207 may not perform a subtraction operation.
[0795] 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.
[0796] 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.
[0797] The inverse quantization unit 210 and the inverse transform unit 211 can respectively apply inverse quantization and inverse transform to the transformed coefficient video block to reconstruct the residual video block from the transformed coefficient video block. The reconstruction unit 212 can add the reconstructed residual video block to the corresponding samples of one or more predicted video blocks generated by the prediction unit 202 to generate a reconstructed video block associated with the current block for storage in the buffer 213.
[0798] After the reconstruction unit 212 reconstructs the video block, a loop filtering operation can be performed to reduce video deblocking artifacts in the video block.
[0799] The entropy coding / decoding unit 214 can receive data from other functional components of the video encoder 200. When the entropy coding / decoding unit 214 receives data, the entropy coding / decoding unit 214 can perform one or more entropy coding operations to generate entropy-coded data and output a bitstream including the entropy-coded data.
[0800] Figure 26 is a block diagram showing an example of the video decoder 300, which can be the Figure 24 video decoder 114 in the system 100 shown.
[0801] The video decoder 300 can be configured to perform any or all of the techniques of the present disclosure. In Figure 26 the example, the video decoder 300 includes a plurality of functional components. The techniques described in the present disclosure can be shared among various components of the video decoder 300. In some examples, the processor can be configured to perform any or all of the techniques described in the present disclosure.
[0802] In Figure 26 the example, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, and a reconstruction unit 306 and a buffer 307. In some examples, the video decoder 300 can perform a decoding process that is generally opposite to the encoding process described with respect to the video encoder 200 (e.g., Figure 25 ).
[0803] The entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream can include entropy-coded video data (e.g., encoded blocks of video data). The entropy decoding unit 301 can decode the entropy-coded video data, and based on the entropy-decoded video data, the motion compensation unit 302 can determine motion information including motion vectors, motion vector precision, reference picture list indices, and other motion information. The motion compensation unit 302 can determine such information, for example, by performing AMVP and merge mode.
[0804] The motion compensation unit 302 may generate motion-compensated blocks and may perform interpolation based on an interpolation filter. The syntax elements may include an identifier of the interpolation filter to be used with sub-pixel accuracy.
[0805] The motion compensation unit 302 may use the interpolation filter used by the video encoder 20 during video block encoding to calculate the interpolation 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 prediction block.
[0806] The motion compensation unit 302 may use some syntax information to determine the size of the blocks used to encode frames and / or slices of an 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.
[0807] The intra prediction unit 303 may form a prediction block from spatially adjacent blocks using, for example, an intra prediction mode received in the bitstream. The inverse quantization unit 303 inverse quantizes, i.e., dequantizes, the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 301. The inverse transform unit 303 applies an inverse transform.
[0808] The reconstruction unit 306 may add a residual block to the corresponding prediction block generated by the motion compensation unit 202 or the intra prediction unit 303 to form a decoded block. If needed, a deblocking filter may also be applied to filter the decoded block in order to remove blocking artifact. The decoded video blocks are then stored in the buffer 307, which provides reference blocks for subsequent motion compensation / intra prediction and also produces the decoded video for presentation on a display device.
[0809] Some embodiments of the disclosed techniques include making a decision or determination to enable a video processing tool or mode. In an example, when a video processing tool or mode is enabled, the encoder will use or implement the tool or mode in the processing of video blocks, but does not necessarily modify the resulting bitstream based on the use of the tool or mode. That is, when a video processing tool or mode is enabled based on a decision or determination, the conversion from video blocks to 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 with the knowledge 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 video blocks will be performed using the video processing tool or mode enabled based on the decision or determination.
[0810] Some embodiments of the disclosed technology include making a decision or decisions 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 the conversion of video blocks to the bitstream representation of the video. In another example, when a video processing tool or mode is disabled, the decoder will process the bitstream without the knowledge that the bitstream has been modified using a video processing tool or mode that has been determined or decided to be enabled.
[0811] The disclosed and other solutions, examples, embodiments, modules, and functional operations described in this document can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or in a combination of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for execution 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 a combination of one or more of them. The term "data processing apparatus" includes all apparatus, devices, and machines for processing data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus can include code that creates an execution environment for the computer program being discussed, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is 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 device.
[0812] A computer program (also called a program, software, software application, script, or code) can be written in any form of programming language, including a compiled or interpreted language, and 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. A program can be stored in a part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program being discussed, or in multiple cooperating files (e.g., files that store one or more modules, subroutines, or portions of code). A computer program can be deployed to execute on one computer or on multiple computers located at one site or distributed across multiple sites and interconnected by a communication network.
[0813] The processes and logical flows described in this document can be executed by one or more programmable processors that execute one or more computer programs to perform functions by operating on input data and generating output. These processes and logical flows can also be executed by dedicated logic circuitry, and the apparatus can also be implemented as dedicated logic circuitry, e.g., an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit).
[0814] By way of example, processors suitable for the execution of a computer program include both general and special purpose microprocessors, and any one or more processors of any type of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include or be operatively coupled to one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, to receive data from or transfer data to them, or both. However, a computer need not have such devices. Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and storage devices, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; CD-ROM; and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, dedicated logic circuitry.
[0815] Although this patent document contains many details, these details should not be construed as limitations on any subject matter or on the scope of what is claimed, but rather as descriptions of features that may be specific to particular embodiments of a particular technology. Certain features that are described in this patent document in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented separately in multiple embodiments or in any suitable sub-combination. Moreover, although the features may be described above as acting in certain combinations and even initially claimed as such, in some cases one or more features from a claimed combination can be deleted from the combination, and the claimed combination can be directed to a sub-combination or a variant of a sub-combination.
[0816] Similarly, although operations are depicted in the drawings in a particular order, this should not be understood as requiring that the operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In addition, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.
[0817] Only a few implementations and examples are described, and other implementations, enhancements, and variations can be made based on what is described and shown in this patent document.
Claims
1. A method for processing video data, comprising: For the conversion between the current block of the video and the bitstream of the video, determining whether to enable the use of the block-level chrominance quantization parameter offset for the current block according to a first enable flag at the slice level, wherein the first enable flag indicates whether to enable the use of the block-level chrominance quantization parameter offset for the blocks in the slice; and Performing the conversion based on the determination; Wherein whether the first enable flag is included in the bitstream at the slice level is based on the value of a second enable flag at the picture level, and the value of the second enable flag indicates whether to allow the block-level chrominance quantization parameter offset; Wherein the second enable flag is included in the picture parameter set; Wherein in response to the value of the second enable flag indicating that the block-level chrominance quantization parameter offset is allowed, the first enable flag is included in the bitstream to indicate whether to enable the use of the block-level chrominance quantization parameter offset for the current block, and Wherein in response to the value of the second enable flag indicating that the block-level chrominance quantization parameter offset is not allowed, the first enable flag is not included in the bitstream.
2. The method according to claim 1, wherein In the case where the value of the second enable flag indicates that the block-level chrominance quantization parameter offset is not allowed, the first enable flag is omitted from the bitstream, and the block-level chrominance quantization parameter offset of the block is determined to be disabled.
3. The method according to claim 1, wherein Determining the use of the block-level chrominance quantization parameter offset of the current block based on at least one of the first enable flag or the second enable flag.
4. The method according to claim 1, wherein, In response to the block-level chrominance quantization parameter offset of the current block being enabled, the block-level chrominance quantization parameter offset is used in at least one of the scaling process or the deblocking filtering process in the conversion.
5. The method according to claim 4, wherein, When the current block is a chrominance block, the block-level chrominance quantization parameter offset is added to the output of the chrominance quantization parameter table operation to determine the parameter used in the decision process at the edge of the chrominance block in the deblocking filtering process.
6. The method according to claim 1, wherein, The conversion includes encoding the video into the bitstream.
7. The method according to claim 1, wherein The conversion includes decoding the video from the bitstream.
8. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein, The instructions, when executed by the processor, cause the processor to: For the conversion between the current block of the video and the bitstream of the video, determining whether to enable the use of the block-level chrominance quantization parameter offset for the current block according to a first enable flag at the slice level, wherein the first enable flag indicates whether to enable the use of the block-level chrominance quantization parameter offset for the blocks in the slice; and Performing the conversion based on the determination; Wherein whether the first enable flag is included in the bitstream at the slice level is based on the value of a second enable flag at the picture level, and the value of the second enable flag indicates whether to allow the block-level chrominance quantization parameter offset; Wherein the second enable flag is included in the picture parameter set; Wherein in response to the value of the second enable flag indicating that the block-level chrominance quantization parameter offset is allowed, the first enable flag is included in the bitstream to indicate whether to enable the use of the block-level chrominance quantization parameter offset for the current block, and Wherein, in response to the value of the second enable flag indicating that block-level chrominance quantization parameter offset is not allowed, the first enable flag is not included in the bitstream.
9. The apparatus according to claim 8, wherein In a case where the value of the second enable flag indicates that block-level chrominance quantization parameter offset is not allowed, the first enable flag is omitted from the bitstream, and the block-level chrominance quantization parameter offset of the block is determined to be disabled; Wherein, the use of the block-level chrominance quantization parameter offset of the current block is determined based on at least one of the first enable flag or the second enable flag.
10. The device according to claim 8, wherein, In response to the block-level chrominance quantization parameter offset of the current block being enabled, the block-level chrominance quantization parameter offset is used for at least one of the scaling process or the deblocking filtering process in the transform; Wherein, when the current block is a chrominance block, the block-level chrominance quantization parameter offset is added to the output of the chrominance quantization parameter table operation to determine the parameter used in the decision process at the chrominance block edge in the deblocking filtering process.
11. A non-transitory computer-readable storage medium storing instructions that cause a processor: For the conversion between the current block of the video and the bitstream of the video, it is determined whether to enable the use of the block-level chrominance quantization parameter offset for the current block according to a first enable flag at the slice level, where The first enable flag indicates whether to enable the use of block-level chrominance quantization parameter offset for blocks in a strip; And Perform the transform based on the determination; Wherein, whether the first enable flag is included in the bitstream at the strip level is based on the value of a second enable flag at the picture level, and the value of the second enable flag indicates whether block-level chrominance quantization parameter offset is allowed; Wherein, the second enable flag is included in the picture parameter set, Wherein, in response to the value of the second enable flag indicating that block-level chrominance quantization parameter offset is allowed, the first enable flag is included in the bitstream to indicate whether to enable the use of the block-level chrominance quantization parameter offset for the current block, and Wherein, in response to the value of the second enable flag indicating that block-level chrominance quantization parameter offset is not allowed, the first enable flag is not included in the bitstream.
12. The non-transitory computer-readable storage medium according to claim 11, wherein, In a case where the value of the second enable flag indicates that block-level chrominance quantization parameter offset is not allowed, the first enable flag is omitted from the bitstream, and the block-level chrominance quantization parameter offset of the block is determined to be disabled; Wherein, the use of the block-level chrominance quantization parameter offset of the current block is determined based on at least one of the first enable flag or the second enable flag.
13. The non-transitory computer-readable storage medium according to claim 11, wherein, In response to the block-level chrominance quantization parameter offset of the current block being enabled, the block-level chrominance quantization parameter offset is used for at least one of the scaling process or the deblocking filtering process in the transform; Wherein, when the current block is a chrominance block, the block-level chrominance quantization parameter offset is added to the output of the chrominance quantization parameter table operation to determine the parameter used in the decision process at the chrominance block edge in the deblocking filtering process.
14. A non-transitory computer-readable recording medium storing a bitstream of video, the bitstream being generated by a method executed by a video processing device, wherein, The method includes: For the current block of a video, determine whether to enable the use of block-level chrominance quantization parameter offset based on a first enable flag at the slice level, where the first enable flag indicates whether to enable the use of block-level chrominance quantization parameter offset for blocks in the slice; and generate the bitstream based on the determination; where whether the first enable flag is included in the bitstream at the slice level is based on the value of a second enable flag at the picture level, and the value of the second enable flag indicates whether block-level chrominance quantization parameter offset is allowed; where the second enable flag is included in the picture parameter set; where, in response to the value of the second enable flag indicating that block-level chrominance quantization parameter offset is allowed, the first enable flag is included in the bitstream to indicate whether to enable the use of block-level chrominance quantization parameter offset for the current block, and where, in response to the value of the second enable flag indicating that block-level chrominance quantization parameter offset is not allowed, the first enable flag is not included in the bitstream.
15. The non-transitory computer-readable recording medium according to claim 14, wherein, In the case where the value of the second enable flag indicates that block-level chrominance quantization parameter offset is not allowed, the first enable flag is omitted from the bitstream, and the block-level chrominance quantization parameter offset of the block is determined to be disabled; where the use of block-level chrominance quantization parameter offset for the current block is determined based on at least one of the first enable flag or the second enable flag.
16. The non-transitory computer-readable recording medium according to claim 14, wherein, In response to the block-level chrominance quantization parameter offset of the current block being enabled, the block-level chrominance quantization parameter offset is used for at least one of the scaling process or the deblocking filtering process in the generation; where, when the current block is a chrominance block, the block-level chrominance quantization parameter offset is added to the output of the chrominance quantization parameter table operation to determine the parameter used in the decision process at the chrominance block edge of the deblocking filtering process.
17. A method for storing a bitstream of a video, comprising: For the current block of a video, determine whether to enable the use of block-level chrominance quantization parameter offset based on a first enable flag at the slice level, where the first enable flag indicates whether to enable the use of block-level chrominance quantization parameter offset for blocks in the slice; generate the bitstream based on the determination; and store the bitstream in a non-transitory computer-readable storage medium; where whether the first enable flag is included in the bitstream at the slice level is based on the value of a second enable flag at the picture level, and the value of the second enable flag indicates whether block-level chrominance quantization parameter offset is allowed; where the second enable flag is included in the picture parameter set; where, in response to the value of the second enable flag indicating that block-level chrominance quantization parameter offset is allowed, the first enable flag is included in the bitstream to indicate whether to enable the use of block-level chrominance quantization parameter offset for the current block, and where, in response to the value of the second enable flag indicating that block-level chrominance quantization parameter offset is not allowed, the first enable flag is not included in the bitstream.
Citation Information
Patent Citations
Block adaptive color-space conversion coding
CN106464881A
Adaptive video deblocking
US20190116358A1
Cited By
Signaling of quantization parameters in video coding
US12666024B2