Opened 12 years ago Closed 12 years ago #735 closed defect (fixed)HM8.0 bug in DBLK + lossless
Description (last modified by ksuehring)
Deblocking filter implmentation has a problem when both PCM and lossless is enabled at the same time.
In TComLoopFilter::xEdgeFilterLuma() (similar in TComLoopFilter::xEdgeFilterChroma()), Bool bPCMFilter = (pcCU->getSlice()->getSPS()->getUsePCM() && pcCU->getSlice()->getSPS()->getPCMFilterDisableFlag())? true : false; Bool bPartPNoFilter = false; Bool bPartQNoFilter = false; .... for ( UInt iIdx = 0; iIdx < uiNumParts; iIdx++ ) ... if (bPCMFilter) { // Check if each of PUs is I_PCM bPartPNoFilter = (pcCUP->getIPCMFlag(uiPartPIdx)); bPartQNoFilter = (pcCUQ->getIPCMFlag(uiPartQIdx)); } // check if each of PUs is lossless coded bPartPNoFilter = bPartPNoFilter || (pcCUP->isLosslessCoded(uiPartPIdx) ); bPartQNoFilter = bPartQNoFilter || (pcCUQ->isLosslessCoded(uiPartQIdx) ); ...
When bPCMFilter = false (pcm_enabled_flag = 0 or pcm_loop_filter_disable_flag = 0), bPartPNoFilter (and bPartQNoFilter) is not reset in the for loop. Therefore, once it becomes true by a lossless-coded CU, it remains true for the rest of the loop. This disables the deblocking filter process for incorrect edges.
So, this part should be replaced with the following, for example (or equivalent code):
Attachments (1)Change History (4)comment:1 Changed 12 years ago by DefaultCC Plugin
Changed 12 years ago by kchonocomment:2 Changed 12 years ago by kchonocomment:3 Changed 12 years ago by ksuehring
The patch has been applied in r2777 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
|
The issue is true and the bug fix is correct. Attachment is an equivalent bug fix patch to HM-8.0.