Opened 9 years ago

Closed 9 years ago

#257 closed defect (fixed)

Null Pointer check missing

Reported by: csghone Owned by:
Priority: minor Milestone: HM-5.1
Component: HM Version: HM-5.0
Keywords: Cc: fbossen, ksuehring, davidf, csghone, jct-vc@…

Description

The line:
iQP_P = pcCUP->getQP(uiPartPIdx)
in functions:
TComLoopFilter::xEdgeFilterChroma() and TComLoopFilter::xEdgeFilterLuma() need a NULL pointer check.

The scenario occurs for sliceMode=1.

Attachments (1)

encoder_2.cfg (8.9 KB) - added by csghone 9 years ago.
Crash Configuration

Download all attachments as: .zip

Change History (9)

comment:1 Changed 9 years ago by DefaultCC Plugin

  • Cc fbossen ksuehring davidf added

Changed 9 years ago by csghone

Crash Configuration

comment:2 Changed 9 years ago by geertv

See ticket #256 for suggested patch.

comment:3 Changed 9 years ago by geertv

After patch from ticket #256 is applied, the encoder crashes at this point:

Assertion failed: pcSlice->getMaxNumMergeCand()<=MRG_MAX_NUM_CANDS_SIGNALED, fil
e ..\..\source\Lib\TLibEncoder\TEncCavlc.cpp, line 797

comment:4 Changed 9 years ago by ksuehring

Did you have a look at #258? This seems to be related.

comment:5 Changed 9 years ago by ksuehring

  • Cc csghone added

I could reproduce that with patches for #256 and #258 applied.

The new crash seems to be related to the implementation of JCTVC-G091.

comment:6 Changed 9 years ago by geertv

In addition to the NULL pointer patch which was provided to fix ticket #256, it may be also good to change the getPULeft and getPUAbove function arguments within the DBF_DQP macro as below (see SLICEBOUNDARY_PATCH macro, which is to be applied to functions TComLoopFilter::xEdgeFilterLuma and TComLoopFilter::xEdgeFilterChroma). This makes the usage of getPULeft and getPUAbove functions similar as in functions TComLoopFilter::xGetBoundaryStrengthSingle and TComLoopFilter::xSetLoopfilterParam.

#if DBF_DQP
      iQP_Q = pcCU->getQP( uiBsAbsIdx );
      uiPartQIdx = uiBsAbsIdx;
      // Derive neighboring PU index
#if SLICEBOUNDARY_PATCH
      if (iDir == EDGE_VER)
      {
        pcCUP = pcCUQ->getPULeft (uiPartPIdx, uiPartQIdx, !pcCU->getSlice()->getSPS()->getLFCrossSliceBoundaryFlag(), false);
      }
      else  // (iDir == EDGE_HOR)
      {
        pcCUP = pcCUQ->getPUAbove(uiPartPIdx, uiPartQIdx, !pcCU->getSlice()->getSPS()->getLFCrossSliceBoundaryFlag(), false);
      }
#else
      if (iDir == EDGE_VER)
      {
        pcCUP = pcCUQ->getPULeft (uiPartPIdx, uiPartQIdx);
      }
      else  // (iDir == EDGE_HOR)
      {
        pcCUP = pcCUQ->getPUAbove(uiPartPIdx, uiPartQIdx);
      }
#endif
#if TILEBOUNDARYINDEPENDENCE_PATCH
      if (!pcCUP)
      {
        return;
      }
#endif
      iQP_P = pcCUP->getQP(uiPartPIdx);

      if(pcCU->getIPCMFlag(uiPartQIdx)) 
      {
        iQP_Q = 0; 
      }
      if(pcCUP->getIPCMFlag(uiPartPIdx)) 
      {
        iQP_P = 0; 
      }

      iQP = (iQP_P + iQP_Q + 1) >> 1;
#endif
Last edited 9 years ago by ksuehring (previous) (diff)

comment:7 Changed 9 years ago by davidf

  • Cc jct-vc@… added

comment:8 Changed 9 years ago by ksuehring

  • Resolution set to fixed
  • Status changed from new to closed

fixed in r2126 and r2127, see also #299

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

  • Chaitanya S. Ghone(Reporter, Subscriber)
  • David Flynn(Subscriber, Participant)
  • Frank Bossen(Subscriber)
  • Geert Van der Auwera(Participant)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Subscriber, Participant, Always)