1.0 introduction
High efficiency video coding (HEVC) is an upgraded video compression standard for H.264 / MPEG-4 AVC (Advanced Video Coding) (ie ISO / IEC 23008-2 MPEG-H Part 2 and ITU-T H.265) It is written in the ISO / IEC Dynamic Image Expert Group (MPEG) and the ITU-T video coding expert group (VCEG). Compared to industry standard H.264, HEVC can achieve semi-bit rate at almost the same video quality, and is expected to be widely used in video applications, including: mobile phones, broadcast, set-top boxes, video conferencing, video surveillance, car, etc.
The figure below shows the structural diagram of the HEVC video decoder with loop filtering, which is highlighted, is loop filtering. As shown, it is a cascade of two levels of two levels that can remove the block effect during the video encoding process, that is, the deck effect filtering (DBLK) and sampling adaptive offset (SAO) filtering. The next two parts will be described in detail.
Figure 1 HEVC video decoder structure diagram
2.0 Device Effect Filter (DBLK)
This section will explain the demolve effect filtering, such as HEVC video standard [1]. The deck effect filter can be used substantially to two parts:
1. Calculation of boundary filter strength (AKA BS) on the edge of the filter
2. The actual operation of the filter
Throughout the entire derocating effect filter, this document uses the following convention: Q pixels are located on the right side of the "longitudinal" filter, and the P pixels are located on the left side of the "longitudinal" filter. Similarly, Q belongs to the pixels below the edge of the "horizontal" filter, and p belongs to the pixels above the edge of the "lateral" filter.
Figure 2 The adjacent pixels called a convention in the process filter in the ring
2.1 Filter Edge Strength (AKA BS)
Boundary filter strength [HOR / VER] [XPOS] [YPOS] calculation is done on an 8x8 grid, value 0, 1, 2, as shown below:
Although there is a filter on each pixel edge of the 8x8 grid (8x8 structure includes 4 pixel edges), the attributes calculated by the boundary filter strength can be combined. In terms of intensity calculations, we assume that each 4 pixel segment is one level. Note that the boundary filter strength calculation depends on the current, left and top LCU LCUInfo.
Figure 3 Interface Filtering Strength (BS) structure diagram showing edge and its number in the 8x8 grid
2.1.1 Overview of Boundary Filter Strength Function
The boundary filter strength calculation is done on an 8x8 grid, set the picture is 0, and the slice boundary (if loop_filter_across_slice_enabled_flag = 0), the TILE boundaries (loop_filter_across_tile_enabled_flag = 0).
Only 8x8 pixel boundary passes through the filter, ie the prediction unit (PU) and / or the conversion unit (TU) boundary, the filtering process is as follows.
Figure 4 of the boundary filter strength (BS) of the PU and TU part tuning
Boundary filter strength derivation rules:
Interested readers can see the HEVC specification to learn about the following:
1. Definition of TU boundary filter strength of boundary filtering: 8.7.2.1
2. PU boundary filter strength derived by boundary filtering strength: 8.7.2.2 chapter
3. Boundary filter strength derivation: 8.7.2.3 chapter
2.1.2 Chromatic boundary filter strength derivation
Only the PU and / or TU boundaries on the 8x8 chromaticity pixel grid are filtered. Chromatic boundary filter intensity source self-luminance boundary filter strength value. In terms of chroma filter 4: 2: 0 (Q0, P0), sampling from the corresponding (2Q0, 2P0) brightness (ie, BS {Hor / Ver} [XPOS / 2] [YPOS / 2] 2 Factors Downlink Sampling Gets the boundary filtering strength.
Figure 5 Chromatic boundary filter strength mapping: matching to an 8x8 grid then divided by 2
2.2 Filter operation
This section will illustrate the actual filtering of the specific block effect in the HEVC video standard.
2.2.1 Length of the filter
For HEVC, the specified filter order is a frame stage (not LCU level), as shown below:
1. In the entire frame processing, H-filtered is performed on all block vertical edges.
2. In the entire frame processing, V-filtered is performed on the lateral edge of all blocks.
Filter is a completely independent 8x8 filter section, as shown in Figure 6:
Figure 6 8X8 block-level independent filtering
Whether the brightness / chrominance (on / off determination) filtering, the filter level (weak filter / strong filtering) and the final actual filtering run will be elaborated in the following sections.
2.2.2 Brightness filter On / Off and Weak / Strong Filtering
The filter opening / closing determination and the brightness strength / weak determination are based on the four row lines shown above.
If the boundary filter strength is equal to 0, the following steps are performed in order:
QPL = ((QPP + QPQ + 1) "" 1), QPP and QPQ are brightness QPS
β = beta_table [clip3 (0,51, qpl + (beta_offset_div2 "2) && (| P3, 0- P0, 0 | + | Q3, 0- Q0, 0 |" 3) && (| P0, 0- q0 , 0 | "1))) DSAM0 = 1
IF ((2 * DPQ3 "2) && (| P3, 3- P0, 3 | + | Q3, 3- Q0, 3 |" 3) && (| P0, 3- Q0, 3 | "1)) DSAM3 = 1
If (DSAM0 == 1 && DSAM3 == 1) DE = 2 (Strong Filter); other DE = 1 (weak filtering);
If (DP "1))" "3)) DEP = 1 // Weak filtering the number of filter sampling
IF (DQ "1))" 3)) DEQ = 1 // Weak filtering of the number of filter sampling
Fig. 7 is used in the filtering / off and the pixel in the filter strength determination in the block effect filtering.
Table 1 The relationship between QP, TC and β (beta_table and tc_table)
2.2.3 Brightness strong filtering and weak filtering
2.2.3.1 Brightness strong filtering mechanism
4 pixel parts shared the same judgment (de, dep, deq)
If (DE == 2), strong filtering is performed to modify the three pixels per end.
P0 '= clip3 (P0? 2 * TC, P0 + 2 * TC, (p2 + 2 * p1 + 2 * p0 + 2 * q0 + q1 + 4) "" 3)
P1 '= clip3 (P1? 2 * TC, P1 + 2 * TC, (p2 + p1 + p0 + q0 + 2) "" 2)
P2 '= clip3 (P2? 2 * TC, P2 + 2 * TC, (2 * p3 + 3 * p2 + p1 + p0 + q0 + 4) "" 3)
Q0 '= clip3 (Q0? 2 * TC, Q0 + 2 * TC, (p1 + 2 * p0 + 2 * q0 + 2 * q1 + q2 + 4) "" 3)
Q1 '= clip3 (Q1? 2 * TC, Q1 + 2 * TC, (p0 + q0 + q1 + q2 + 2) "" 2)
Q2 '= clip3 (Q2? 2 * TC, Q2 + 2 * TC, (p0 + q0 + q1 + 3 * q2 + 2 * q3 + 4) "" 3)
Figure 8 Use of brightness DBLK filtering and edge surroundings
2.2.3.2 Brightness weak filter mechanism
4 pixel parts shared the same judgment (de, dep, deq)
If (DE == 1), weak filtering is performed to modify one or two pixels per end.
D = (9 * (q0- p0) -3 * (Q1-P1) +8) "" 4
If (ABS (δ) "1), TC" "" "" ((p2 + p0 + 1) "" 1) -p1 + δ) "" 1)
P1 '= clip1y (p1 + ΔP)
If DEQ is equal to 1, the filter sampling value Q1 'is stated as follows:
ΔQ = Clip3 ((TC "" 1), TC "" "" "((((((((Q2 + Q0 + 1)" "1) -Q1-δ)" "1)
Q1 '= clip1y (Q1 + ΔQ))
2.2.4 Chroma filter
Only 8x8 chromaticity pixel grids are filtered by PU and / or TU boundaries
Boundary filter strength derived from brightness (2 factors in each direction) (see Chromatic Boundary Filtering Strength Division)
QPI = ((QPQ + QPP + 1) "1) + CQP_Offset, where the CQP_OFFSET here represents the PIC_CB_QP_OFFSET and PIC_CR_QP_OFFSET of the components CB / U and CR / V, respectively.
The QPI of the table includes QPC
Figure 9 Use of chroma DBLK filtering and edge surroundings
Table 2 QPC conversion to QPI
Tc = TC_TABLE [Clip3 (0,53, qpc + 2 * (BS-1) + (tc_offset_div2 1, the chroma filter will be turned on.
Δ = clip3 (-TC, TC, ((((Q0-P0) "3))
P0 '= CLIP1C (P0 + δ)
Q0 '= clip1c (q0-δ)
3.1.3 Boundary condition processing
Three conditions required for conditional processing:
1. Image boundary (upper, lower left, right)
2. Split the border and slice_lice_filter_across_slices_enabled_flag = 0. Split fractional filtering is suitable for the left and upper edges of a given slice boundary (not all directions)
3. Tile border and loop_filter_across_tiles_enabled_flag = 0
In the above case, the pixels along the slice boundary are not processed, depending on the SAO type.
For Bo, all pixels will be processed.
For EO, pixel validity will be performed according to the SAO type, and if the pixel is invalid under boundary conditions, it will skip the processing (ie 0 drift).
The following figure describes the boundary condition processing.
Figure 14 SAO decoder boundary processing example
3.1.4 Conditional Processing
When the following conditions, the SAO filter will be closed.
SAO type idx = OFF
Cu type = PCM and loop filter is described as PCM type
Cu type = tQBYPSS (no loss)
Limited level SAO = OFF
Editor in charge: GT, read full text
Our other product: