Opened 13 years ago

Closed 13 years ago

#299 closed defect (fixed)

Deblocking filter has been always disabled on independent tile boundary

Reported by: shilin.xu Owned by:
Priority: minor Milestone: HM-6.1
Component: HM Version: HM-5.1
Keywords: Cc: fbossen, ksuehring, davidf, jct-vc@…

Description

As a result of the integration of QP averaging for deblocking (from JCTVC-G1031), HM5.x deblocking filter is no longer applied across independent tile boundaries leaving very visible block artifacts on tile boundaries in some cases. Taking HM5.1-rc2 for example, the bug exists in two places of TComLoopFilter.cpp file:

1) From line 905 to 908, the following code will disable luma sample DLF if the neighbor CU is in another independent tile.

if (!pcCUP)
{

return;

}

2) From line 1220 to 1223, the following code will disable chroma sample DLF if the neighbor CU is in another independent tile.

if (!pcCUP)
{

return;

}

From the code, it is clear that the implementer has chosen not to filter (i.e., return) when the neighboring QP is not available. We believe that the spirit of JCTVC-G1031 and WD 5 is to use both QP values and availability is not an issue since both QP values are available at the time the deblocking filter is applied.

Change History (4)

comment:1 Changed 13 years ago by DefaultCC Plugin

  • Cc fbossen ksuehring davidf jct-vc@… added

comment:2 Changed 13 years ago by ksuehring

  • Version changed from HM-5.1rc2 to HM-5.1

comment:3 Changed 13 years ago by francoise

proposed fix:

Replace in the 2 functions xEdgeFilterLuma() and xEdgeFilterChroma() :

if (iDir == EDGE_VER)
{

pcCUP = pcCUQ->getPULeft (uiPartPIdx, uiPartQIdx);

}
else (iDir == EDGE_HOR)
{

pcCUP = pcCUQ->getPUAbove(uiPartPIdx, uiPartQIdx);

}
if (!pcCUP)
{

return;

}

By:

if (iDir == EDGE_VER)
{

pcCUP = pcCUQ->getPULeft (uiPartPIdx, uiPartQIdx,!pcCU->getSlice()->getSPS()->getLFCrossSliceBoundaryFlag(), false, !m_bLFCrossTileBoundary);

}
else (iDir == EDGE_HOR)
{

pcCUP = pcCUQ->getPUAbove(uiPartPIdx, uiPartQIdx,!pcCU->getSlice()->getSPS()->getLFCrossSliceBoundaryFlag(), false, false, false, !m_bLFCrossTileBoundary);

}

comment:4 Changed 13 years ago by ksuehring

  • Milestone set to HM-6.1
  • Resolution set to fixed
  • Status changed from new to closed

the fix has been committed in r2126 and r2127

Note: See TracTickets for help on using tickets.

This list contains all users that will be notified about changes made to this ticket.

These roles will be notified: Reporter, Owner, Subscriber, Participant

  • David Flynn(Subscriber)
  • Francois Edouard(Participant)
  • Frank Bossen(Subscriber)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Subscriber, Participant, Always)
  • Shilin Xu(Reporter)