﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
743	Deblocking filter : neighboring information	Jing-Jing Chung	bbross	"
In chapter 8.7.2.3 : ""derivation process of boundary filtering strength"" of JCTVC-J1003_d7, we need to keep some prediction block informations to determine the bS of the current prediction block boundary : for example : prediction mode (inter/intra) , PartMode, motion vectors and reference pictures.

Let's consider the case where the current boundary is a prediction block boundary, and q0 and p0 are both coded with inter prediction.

======
For horizontal edge, if p0 and q0 do not belong to the same coding tree block (CTB), we may use another p0, not necessarily the top neighbor of q0
(See attached schematics):

""– When edgeType is equal to EDGE_HOR and yC + yDj − 1 is less than (( yC >> Log2CtbSizeY ) << Log2CtbSizeY), sample p0 = recPictureL[ xL ][ yC + yDj – 1 ] where xL is equal to ((( xC + xDi ) >> 3) << 3) + ((( xC + xDi ) >> 3) & 1) * 7""

My understanding is that, if we consider a deblocking process that works on picture CTB row basis, we only need to have from the top CTB row, at most 2 prediction block information per 16 pixel of horizontal boundary (instead of 4 at most). This is done to reduce bandwidth.

======
The current deblocking function has been optimized, in terms of bandwidth, for a CTB process in picture raster scan. This scan order is not the order used in the other functions of chapter 8.

The intention of our proposal is to reduce bandwidth when we are doing the deblocking filter in tile scan order (i.e. the same order as the other functions). The proposed idea is the same as the one used for horizontal edge.

Our proposal (to be done after the previous point on horizontal edge):

- When edgeType is equal to EDGE_VER and TileId[ctbAddrTS_p0] is different from TileId[ctbAddrTS_q0], sample p0 = recPictureL[ xC + xDi - 1 ][ yL ]
where :
yL = ((( yC + yDj ) >> 3) << 3) + ((( yC + yDj ) >> 3) & 1) * 7
ctbAddrTS_p0 = ctbAddrRStoTS[ ctbAddrRS_p0 ]
ctbAddrRS_p0 = ((xC + xDi -1) >> Log2CtbSize) + ((yC + yDj) >> Log2CtbSize) * PicWidthInCtbsY
ctbAddrTS_q0 = ctbAddrRStoTS[ ctbAddrRS_q0 ]
ctbAddrRS_q0 = ((xC + xDi) >> Log2CtbSize) + ((yC + yDj) >> Log2CtbSize) * PicWidthInCtbsY


Note : this could also be done for slice vertical boundaries. Note that a slice vertical boundary that does not coincide with a tile boundary is only 1 CTB high.

Note 2 : In this proposal we do not take into account the potential quality loss on tile boundaries."	technical change	closed	major		Text	D8 (J1003) d7	wontfix		bbross wjhan jct-vc@…
