Changeset 139 in 3DVCSoftware for branches/HTM-4.0-Nokia


Ignore:
Timestamp:
24 Sep 2012, 14:08:01 (12 years ago)
Author:
nokia
Message:

3DV-HTM v4.0: FCO

Location:
branches/HTM-4.0-Nokia/source
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-4.0-Nokia/source/App/TAppDecoder/TAppDecTop.cpp

    r105 r139  
    8787  increaseNumberOfViews( 1 );
    8888#endif
    89  
     89#if FLEX_CODING_ORDER
     90  Int iDepthViewIdx = 0;
     91  Int iTextureViewIdx=0;
     92  Bool first_frame=1;
     93  Bool viewid_zero=true;
     94  Int FCO_index=0;  //when the current frame is not first frame,use FCO_index stand for viewDepth.
     95#endif
     96
    9097#if SONY_COLPIC_AVAILABILITY
    9198  m_tDecTop[0]->setViewOrderIdx(0);
    9299#endif
     100
    93101  Int                 viewDepthId = 0;
    94102  Int                 previousViewDepthId  = 0;
     
    102110    pcListPic[i] = NULL;
    103111    newPicture[i] = false;
     112#if FLEX_CODING_ORDER
     113    FCO_Order[i]=NULL;
     114#endif
    104115  }
    105116
     
    156167        depth = getVPSAccess()->getActiveVPS()->getDepthFlag(nalu.m_layerId);
    157168      }
    158       viewDepthId = nalu.m_layerId;   // coding order T0D0T1D1T2D2
     169#if FLEX_CODING_ORDER
     170      if (viewId>0)
     171      {
     172        viewid_zero=false;
     173      }
     174      if (viewid_zero==false&&viewId==0)
     175      {
     176        first_frame=0; //if viewId has been more than zero and now it set to zero again, we can see that it is not the first view
     177      }
     178      if (first_frame)
     179      { // if the current view is first frame, we set the viewDepthId as texture plus depth and get the FCO order
     180        viewDepthId = iDepthViewIdx+iTextureViewIdx;
     181        FCO_viewDepthId=viewDepthId;
     182      }
     183      else
     184      {//if current view is not first frame, we set the viewDepthId depended on the FCO order
     185        viewDepthId=0;
     186        if (depth)
     187        {
     188          for (FCO_index=0;FCO_index<2*MAX_VIEW_NUM;FCO_index++ )
     189          {
     190            if (FCO_Order[FCO_index]=='D')
     191            {
     192              if (viewId==viewDepthId)
     193                break;
     194              else
     195                viewDepthId++;
     196            }
     197          }
     198        }
     199        else
     200        {
     201          for (FCO_index=0;FCO_index<2*MAX_VIEW_NUM;FCO_index++ )
     202          {
     203            if (FCO_Order[FCO_index]=='T')
     204            {
     205              if (viewId==viewDepthId)
     206                break;
     207              else
     208                viewDepthId++;
     209            }
     210          }
     211        }
     212
     213        viewDepthId=FCO_index;
     214
     215      }
     216
     217
     218#else
     219       viewDepthId = nalu.m_layerId;   // coding order T0D0T1D1T2D2
     220#endif
     221   
    159222#else
    160223      Int viewId = nalu.m_viewId;
    161224      Int depth = nalu.m_isDepth ? 1 : 0;
    162       viewDepthId = viewId * 2 + depth;   // coding order T0D0T1D1T2D2
     225#if FLEX_CODING_ORDER
     226      if (viewId>0)
     227      {
     228        viewid_zero=false;
     229      }
     230      if (viewid_zero==false&&viewId==0)
     231      {
     232        first_frame=0;
     233      }
     234      if (first_frame)
     235      {
     236        viewDepthId = iDepthViewIdx+iTextureViewIdx;
     237        FCO_viewDepthId=viewDepthId;
     238      }
     239      else
     240      {
     241        viewDepthId=0;
     242        if (depth)
     243        {
     244          for (FCO_index=0;FCO_index<2*MAX_VIEW_NUM;FCO_index++ )
     245          {
     246            if (FCO_Order[FCO_index]=='D')
     247            {
     248              if (viewId==viewDepthId)
     249                break;
     250              else
     251                viewDepthId++;
     252            }
     253          }
     254        }
     255        else
     256        {
     257          for (FCO_index=0;FCO_index<2*MAX_VIEW_NUM;FCO_index++ )
     258          {
     259            if (FCO_Order[FCO_index]=='T')
     260            {
     261              if (viewId==viewDepthId)
     262                break;
     263              else
     264                viewDepthId++;
     265            }
     266          }
     267        }
     268
     269        viewDepthId=FCO_index;
     270
     271      }
     272#else
     273  viewDepthId = viewId * 2 + depth;   // coding order T0D0T1D1T2D2
     274#endif
     275     
    163276#endif
    164277     
     
    190303        for( Int i = 0; i < m_tDecTop.size(); i++ )
    191304        {
     305//#if FLEX_CODING_ORDER
     306//        FCO_Order[i]=NULL;
     307//#endif
    192308          m_tDecTop[i]->compressMotion( uiPOC[i] );
    193309        }
     
    209325        {
    210326          previousPictureDecoded = true;
     327#if FLEX_CODING_ORDER
     328if (first_frame)
     329{
     330  if (depth)
     331  {
     332    iDepthViewIdx++;
     333    FCO_Order[viewDepthId]='D';
     334  }
     335  else
     336  {
     337    iTextureViewIdx++;
     338    FCO_Order[viewDepthId]='T';
     339  }
     340}
     341
     342
     343
     344#endif
    211345        }
    212346      }
     
    215349    {
    216350      m_tDecTop[viewDepthId]->executeDeblockAndAlf(uiPOC[viewDepthId], pcListPic[viewDepthId], m_iSkipFrame, m_pocLastDisplay[viewDepthId]);
     351
    217352    }
    218353    if( pcListPic[viewDepthId] )
     
    234369    previousViewDepthId = viewDepthId;
    235370  }
     371
     372
     373
     374
     375
    236376  if( m_cCamParsCollector.isInitialized() )
    237377  {
     
    502642TDecTop* TAppDecTop::getTDecTop( Int viewId, Bool isDepth )
    503643{
     644#if FLEX_CODING_ORDER
     645  Int viewnumber=0;
     646  Int i=0;
     647  Bool FCO_flag=0;
     648  if (viewId>FCO_viewDepthId)
     649  {
     650    return NULL;
     651  }
     652  else
     653  {
     654    if (isDepth)
     655   {
     656      for ( i=0; i<=FCO_viewDepthId;i++)
     657      {
     658         if (FCO_Order[i]=='D')
     659         {
     660           if (viewnumber==viewId)
     661           {
     662             FCO_flag=1;
     663             break;
     664           }
     665           else
     666             viewnumber++;
     667         }
     668      }
     669    }
     670    else
     671    {
     672      for ( i=0; i<=FCO_viewDepthId;i++)
     673      {
     674        if (FCO_Order[i]=='T')
     675        {
     676          if (viewnumber==viewId)
     677          {
     678            FCO_flag=1;
     679            break;
     680          }
     681          else
     682            viewnumber++;
     683        }
     684      }
     685    }
     686    if (FCO_flag)
     687    {
     688      return m_tDecTop[i];
     689    }
     690    else
     691      return NULL;
     692   
     693  }
     694
     695    // coding order T0D0T1D1T2D2
     696#else
    504697  return m_tDecTop[(isDepth ? 1 : 0) + viewId * 2];  // coding order T0D0T1D1T2D2
     698#endif
     699  /*
     700  //original code
     701  return m_tDecTop[(isDepth ? 1 : 0) + viewId * 2];  // coding order T0D0T1D1T2D2
     702  */
    505703}
    506704
     
    520718{
    521719  assert( ( viewId >= 0 ) );
    522 
     720#if FLEX_CODING_ORDER
     721if (getTDecTop(viewId,isDepth))
     722{
     723   TComList<TComPic*>* apcListPic = getTDecTop( viewId, isDepth )->getListPic();
     724   TComPic* pcPic = NULL;
     725   for( TComList<TComPic*>::iterator it=apcListPic->begin(); it!=apcListPic->end(); it++ )
     726   {
     727     if( (*it)->getPOC() == poc )
     728     {
     729       pcPic = *it;
     730       break;
     731     }
     732   }
     733   return pcPic;
     734}
     735else
     736  return NULL;
     737#else
    523738  TComList<TComPic*>* apcListPic = getTDecTop( viewId, isDepth )->getListPic();
    524739  TComPic* pcPic = NULL;
     
    532747  }
    533748  return pcPic;
     749#endif
     750
     751
    534752}
    535753//! \}
  • branches/HTM-4.0-Nokia/source/App/TAppDecoder/TAppDecTop.h

    r100 r139  
    7070  std::vector<Int>                m_pocLastDisplay;               ///< last POC in display order
    7171  Bool                            m_useDepth;
    72 
     72#if FLEX_CODING_ORDER
     73  Int  FCO_viewDepthId;
     74  Char FCO_Order[MAX_VIEW_NUM*2];
     75#endif
    7376  FILE*                           m_pScaleOffsetFile;
    7477  CamParsCollector                m_cCamParsCollector;
  • branches/HTM-4.0-Nokia/source/App/TAppEncoder/TAppEncCfg.h

    r102 r139  
    8888  Int       m_iNumberOfViews;                                 ///< number Views to Encode
    8989  Bool      m_bUsingDepthMaps;
     90
     91#if FLEX_CODING_ORDER
     92  char*  m_pchMVCJointCodingOrder;      ///<  texture-depth coding order
     93  Bool    m_b3DVFlexOrder;    ///<  flexible coding order flag
     94#endif
     95
     96
     97
     98
    9099  // coding structure
    91100  Int       m_iIntraPeriod;                                   ///< period of I-slice (random access period)
  • branches/HTM-4.0-Nokia/source/App/TAppEncoder/TAppEncTop.cpp

    r102 r139  
    369369    for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++)
    370370    {
     371#if FLEX_CODING_ORDER
     372      // Detect whether depth comes before than texture for this view
     373      Bool isDepthFirst = false;
     374      if ( m_b3DVFlexOrder )
     375      {
     376        for ( Int ii=1; ii<12; ii+=2 )
     377        {
     378          Int iViewIdxCfg = (Int)(m_pchMVCJointCodingOrder[ii]-'0');
     379          if ( iViewIdxCfg == iViewIdx )
     380          {
     381            if ( m_pchMVCJointCodingOrder[ii-1]=='D' ) // depth comes first for this view
     382            {
     383              isDepthFirst = true;
     384            }
     385            else
     386            {
     387              assert(m_pchMVCJointCodingOrder[ii-1]=='T');
     388            }
     389            break;
     390          }
     391        }
     392      }
     393#endif
    371394      m_depthFrameRcvd.push_back(0);
    372395      m_acTEncDepthTopList.push_back(new TEncTop);
     
    634657    m_acTEncDepthTopList[iViewIdx]->setUseDMM                     ( m_bUseDMM );
    635658#endif
     659
     660#if FLEX_CODING_ORDER && HHI_DMM_PRED_TEX
     661    m_acTEncDepthTopList[iViewIdx]->setUseDMM34( (m_b3DVFlexOrder && isDepthFirst) ? false : m_bUseDMM );
     662#endif
     663
     664
    636665#if HHI_MPI
    637      m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI );
     666#if FLEX_CODING_ORDER
     667    m_acTEncDepthTopList[iViewIdx]->setUseMVI( (m_b3DVFlexOrder && isDepthFirst) ? false : m_bUseMVI );
     668#else
     669    m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI );
     670#endif
     671    // m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI );
    638672#endif
    639673    }
     
    920954      m_cCameraData.update( iNextPoc );
    921955      }
     956
     957
     958
     959#if FLEX_CODING_ORDER
     960      if (m_b3DVFlexOrder)
     961      {
     962        Int  iNumDepthEncoded = 0;
     963        iNumEncoded = 0;
     964        Int i=0;
     965        Int iViewIdx=0;
     966        Int iNumberofDepthViews = m_bUsingDepthMaps?m_iNumberOfViews:0;
     967        for (Int j=0; j < (m_iNumberOfViews+ iNumberofDepthViews); j++ )
     968        {
     969          if (m_pchMVCJointCodingOrder[i]=='T')
     970          {
     971
     972            i++;
     973            assert(isdigit(m_pchMVCJointCodingOrder[i]));
     974            iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0');
     975
     976            m_acTEncTopList[iViewIdx]->encode( eos[iViewIdx], pcPicYuvOrg, *m_picYuvRec[iViewIdx], outputAccessUnits, iNumEncoded, gopId );
     977            xWriteOutput(bitstreamFile, iNumEncoded, outputAccessUnits, iViewIdx, false);
     978            outputAccessUnits.clear();
     979            i++;
     980          }
     981          else if ( m_pchMVCJointCodingOrder[i] == 'D')
     982          {
     983
     984            i++;
     985            if( m_bUsingDepthMaps )
     986            {
     987              assert(isdigit(m_pchMVCJointCodingOrder[i]));
     988              iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0');
     989#if SAIT_VSO_EST_A0033
     990              if( m_bUseVSO && iNextPoc < m_iFrameToBeEncoded )
     991              {
     992                m_cCameraData.xSetDispCoeff( iNextPoc, iViewIdx );
     993                m_acTEncDepthTopList[iViewIdx]->setDispCoeff( m_cCameraData.getDispCoeff() );
     994              }
     995#endif
     996              m_acTEncDepthTopList[iViewIdx]->encode( depthEos[iViewIdx], pcDepthPicYuvOrg, *m_picYuvDepthRec[iViewIdx], outputAccessUnits, iNumDepthEncoded, gopId );
     997              xWriteOutput(bitstreamFile, iNumDepthEncoded, outputAccessUnits, iViewIdx, true);
     998              outputAccessUnits.clear();
     999              i++;
     1000            }
     1001          }
     1002        }
     1003      }
     1004      else
     1005      {
     1006
     1007#endif
     1008
     1009//original code
     1010
    9221011      for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ )
    9231012      {
     
    9431032        }
    9441033      }
     1034
     1035#if FLEX_CODING_ORDER
     1036      }
     1037#endif
     1038
     1039
     1040
     1041
    9451042#if HHI_INTERVIEW_SKIP || HHI_INTER_VIEW_MOTION_PRED || HHI_INTER_VIEW_RESIDUAL_PRED
    9461043      for( Int iViewIdx = 0; iViewIdx < m_iNumberOfViews; iViewIdx++ )
  • branches/HTM-4.0-Nokia/source/Lib/TLibCommon/TComSlice.cpp

    r101 r139  
    14411441, m_bUseDMM                   (false)
    14421442#endif
     1443
     1444#if FLEX_CODING_ORDER && HHI_DMM_PRED_TEX
     1445, m_bUseDMM34                   (false)
     1446#endif
     1447
    14431448{
    14441449  // AMVP parameter
  • branches/HTM-4.0-Nokia/source/Lib/TLibCommon/TComSlice.h

    r101 r139  
    354354#endif
    355355
     356#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     357  Bool  m_bUseDMM34;
     358#endif
     359
    356360#if DEPTH_MAP_GENERATION
    357361  UInt  m_uiPredDepthMapGeneration;
     
    382386  Void setVPSId       (Int i)    { m_VPSId = i;             }
    383387#endif
    384   Int  getSPSId       ()         { return m_SPSId;          }
     388  Int  getSPSId       ()         
     389  { return m_SPSId;          }
    385390  Void setSPSId       (Int i)    { m_SPSId = i;             }
    386391  Int  getProfileIdc  ()         { return m_ProfileIdc;     }
     
    619624#endif
    620625
     626#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     627  Bool getUseDMM34()         { return m_bUseDMM34; }
     628  Void setUseDMM34( Bool b ) { m_bUseDMM34 = b;    }
     629#endif
     630
    621631  Void initMultiviewSPS      ( UInt uiViewId, Int iViewOrderIdx = 0, UInt uiCamParPrecision = 0, Bool bCamParSlice = false, Int** aaiScale = 0, Int** aaiOffset = 0 );
    622632  Void initMultiviewSPSDepth ( UInt uiViewId, Int iViewOrderIdx );
  • branches/HTM-4.0-Nokia/source/Lib/TLibCommon/TypeDef.h

    r105 r139  
    4646#define FIX_DECODING_WO_WRITING           1
    4747#define FIX_INIT_ROM                      1
     48
    4849#define FIX_VIRT_DESTRUCTOR               1
     50
     51
     52
     53
     54#define FLEX_CODING_ORDER               1
     55#if FLEX_CODING_ORDER
     56  #define DISABLE_FCO_FOR_VSO             1
     57#else
     58  #define DISABLE_FCO_FOR_VSO             0
     59#endif
     60
    4961
    5062
  • branches/HTM-4.0-Nokia/source/Lib/TLibDecoder/TDecTop.cpp

    r77 r139  
    614614
    615615#if SKIPFRAME_BUGFIX
    616 Bool TDecTop::xDecodeSlice(InputNALUnit &nalu, Int &iSkipFrame, Int iPOCLastDisplay )
    617 #else
    618 Bool TDecTop::xDecodeSlice(InputNALUnit &nalu, Int iSkipFrame, Int iPOCLastDisplay )
     616Bool TDecTop::xDecodeSlice(InputNALUnit &nalu, Int &iSkipFrame, Int iPOCLastDisplay
     617)
     618#else
     619Bool TDecTop::xDecodeSlice(InputNALUnit &nalu, Int iSkipFrame, Int iPOCLastDisplay
     620                           )
    619621#endif
    620622{
     
    969971    assert( m_tAppDecTop != NULL );
    970972    TComPic * const pcTexturePic = m_isDepth ? m_tAppDecTop->getPicFromView(  m_viewId, pcSlice->getPOC(), false ) : NULL;
     973
     974#if FLEX_CODING_ORDER
     975    if (pcTexturePic != NULL)
     976    {
     977      assert( !m_isDepth || pcTexturePic != NULL );
     978      pcSlice->setTexturePic( pcTexturePic );
     979    }
     980#else
    971981    assert( !m_isDepth || pcTexturePic != NULL );
    972982    pcSlice->setTexturePic( pcTexturePic );
     983#endif
     984   
     985
     986//     //original code
     987//     assert( !m_isDepth || pcTexturePic != NULL );
     988//     pcSlice->setTexturePic( pcTexturePic );
     989
     990
    973991
    974992    std::vector<TComPic*> apcInterViewRefPics = m_tAppDecTop->getInterViewRefPics( m_viewId, pcSlice->getPOC(), m_isDepth, pcSlice->getSPS() );
     
    10821100}
    10831101
     1102
     1103
     1104
     1105
    10841106#if VIDYO_VPS_INTEGRATION
    10851107Void TDecTop::xDecodeVPS()
     
    11471169}
    11481170
    1149 Bool TDecTop::decode(InputNALUnit& nalu, Int& iSkipFrame, Int& iPOCLastDisplay)
     1171Bool TDecTop::decode(InputNALUnit& nalu, Int& iSkipFrame, Int& iPOCLastDisplay
     1172
     1173 )
    11501174{
    11511175  // Initialize entropy decoder
     
    11841208    case NAL_UNIT_CODED_SLICE_CDR:
    11851209#endif
    1186       return xDecodeSlice(nalu, iSkipFrame, iPOCLastDisplay);
     1210      return xDecodeSlice(nalu, iSkipFrame, iPOCLastDisplay
     1211        );
    11871212      break;
    11881213    default:
  • branches/HTM-4.0-Nokia/source/Lib/TLibDecoder/TDecTop.h

    r100 r139  
    111111  TComList<TComPic*>      m_cListPic;         //  Dynamic buffer
    112112  ParameterSetManagerDecoder m_parameterSetManagerDecoder;  // storage for parameter sets
     113
     114
    113115  TComRPSList             m_RPSList;
    114116  TComSlice*              m_apcSlicePilot;
    115  
     117
    116118  SEImessages *m_SEIs; ///< "all" SEI messages.  If not NULL, we own the object.
    117119
     
    165167 
    166168  Void  init( TAppDecTop* pcTAppDecTop, Bool bFirstInstance );
    167   Bool  decode(InputNALUnit& nalu, Int& iSkipFrame, Int& iPOCLastDisplay);
     169  Bool  decode(InputNALUnit& nalu, Int& iSkipFrame, Int& iPOCLastDisplay
     170  );
    168171 
    169172  Void  deletePicBuffer();
     
    204207  Void      xActivateParameterSets();
    205208#if SKIPFRAME_BUGFIX
    206   Bool      xDecodeSlice(InputNALUnit &nalu, Int &iSkipFrame, Int iPOCLastDisplay);
     209  Bool      xDecodeSlice(InputNALUnit &nalu, Int &iSkipFrame, Int iPOCLastDisplay
     210    );
    207211#else
    208   Bool      xDecodeSlice(InputNALUnit &nalu, Int iSkipFrame, Int iPOCLastDisplay);
     212  Bool      xDecodeSlice(InputNALUnit &nalu, Int iSkipFrame, Int iPOCLastDisplay,
     213    );
    209214#endif
    210215#if VIDYO_VPS_INTEGRATION
  • branches/HTM-4.0-Nokia/source/Lib/TLibEncoder/TEncCfg.h

    r100 r139  
    312312#endif
    313313
     314#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     315  Bool m_bUseDMM34;
     316#endif
     317
    314318  Int      m_iViewOrderIdx;
    315319
     
    799803#endif
    800804
     805#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     806  Void setUseDMM34( Bool b) { m_bUseDMM34 = b;    }
     807  Bool getUseDMM34()        { return m_bUseDMM34; }
     808#endif
     809
    801810  Void      setViewOrderIdx       ( Int   i )      { m_iViewOrderIdx          = i; }
    802811  Void      setCamParPrecision              ( UInt  u )      { m_uiCamParPrecision      = u; }
  • branches/HTM-4.0-Nokia/source/Lib/TLibEncoder/TEncGOP.cpp

    r102 r139  
    167167  TEncSbac* pcSbacCoders = NULL;
    168168  TComOutputBitstream* pcSubstreamsOut = NULL;
     169  int is_Depth;
    169170
    170171  {
     
    255256      pcSlice->setViewId( m_pcEncTop->getViewId() );
    256257      pcSlice->setIsDepth( m_pcEncTop->getIsDepth() );
    257 
     258      is_Depth = m_pcEncTop->getIsDepth();
    258259      m_pcEncTop->getSPS()->setDisInter4x4(m_pcEncTop->getDisInter4x4());
    259260      pcSlice->setScalingList ( m_pcEncTop->getScalingList()  );
     
    461462
    462463#if SAIT_VSO_EST_A0033
    463     m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true ) );
     464   
     465{
     466Bool flag_rec;
     467
     468    flag_rec =  ((m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true) == NULL) ? false: true);
     469    m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, flag_rec ) );
    464470    m_pcRdCost->setDepthPicYuv   ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) );
    465 #endif
    466 
    467 
     471}
     472#endif
    468473  }
    469474#endif
  • branches/HTM-4.0-Nokia/source/Lib/TLibEncoder/TEncSbac.cpp

    r101 r139  
    964964#endif
    965965#if HHI_DMM_PRED_TEX
     966
     967#if FLEX_CODING_ORDER
     968    if ( !pcCU->getSlice()->getSPS()->getUseDMM34() )
     969    {
     970      assert( uiDir != DMM_WEDGE_PREDTEX_D_IDX );
     971      assert( uiDir != DMM_CONTOUR_PREDTEX_D_IDX );
     972    }
     973#endif
     974
    966975    if( uiDir == DMM_WEDGE_PREDTEX_D_IDX )     { xCodeWedgePredTexDeltaInfo  ( pcCU, uiAbsPartIdx ); }
    967976    if( uiDir == DMM_CONTOUR_PREDTEX_D_IDX )   { xCodeContourPredTexDeltaInfo( pcCU, uiAbsPartIdx ); }
  • branches/HTM-4.0-Nokia/source/Lib/TLibEncoder/TEncSearch.cpp

    r100 r139  
    20252025#endif
    20262026#if HHI_DMM_PRED_TEX
     2027
     2028#if FLEX_CODING_ORDER
     2029      if ( pcCU->getSlice()->getSPS()->getUseDMM34() )
     2030      {
     2031#endif
    20272032      UInt uiTexTabIdx  = 0;
    20282033      Int  iTexDeltaDC1 = 0;
     
    20482053        uiRdModeList[ numModesForFullRD++ ] = DMM_CONTOUR_PREDTEX_D_IDX;
    20492054      }
     2055#if FLEX_CODING_ORDER
     2056      }
     2057#endif
    20502058#endif
    20512059    }
     
    20832091
    20842092#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     2093#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     2094      if( m_pcEncCfg->getIsDepth() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight, pcCU->getSlice()->getSPS()->getUseDMM34() )
     2095#if LGE_EDGE_INTRA
     2096        && uiOrgMode < EDGE_INTRA_IDX
     2097#endif
     2098        )
     2099
     2100#else
     2101
    20852102      if( m_pcEncCfg->getIsDepth() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight )
    20862103#if LGE_EDGE_INTRA
     
    20882105#endif
    20892106        )
     2107#endif
    20902108      {
    20912109        continue;
     
    60146032}
    60156033
    6016 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     6034#if ((HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX)&&FLEX_CODING_ORDER)
     6035Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight, Bool bDMMAvailable34 )
     6036#else
    60176037Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight )
     6038#endif
    60186039{
    60196040  if( uiMode < NUM_INTRA_MODE ) return true;
     
    60236044#if HHI_DMM_WEDGE_INTRA
    60246045  if( uiMode == DMM_WEDGE_FULL_IDX        ||
    6025       uiMode == DMM_WEDGE_FULL_D_IDX      ||
    6026       uiMode == DMM_WEDGE_PREDDIR_IDX     ||
    6027       uiMode == DMM_WEDGE_PREDDIR_D_IDX )
     6046    uiMode == DMM_WEDGE_FULL_D_IDX      ||
     6047    uiMode == DMM_WEDGE_PREDDIR_IDX     ||
     6048    uiMode == DMM_WEDGE_PREDDIR_D_IDX )
    60286049  {
    60296050    if( (uiWidth != uiHeight) || (uiWidth < DMM_WEDGEMODEL_MIN_SIZE) || (uiWidth > DMM_WEDGEMODEL_MAX_SIZE) || ( ( uiMode == DMM_WEDGE_PREDDIR_IDX || uiMode == DMM_WEDGE_PREDDIR_D_IDX ) && uiWidth == 4 ) )
     
    60356056#if HHI_DMM_PRED_TEX
    60366057  if( uiMode == DMM_WEDGE_PREDTEX_IDX     ||
    6037       uiMode == DMM_WEDGE_PREDTEX_D_IDX   ||
    6038       uiMode == DMM_CONTOUR_PREDTEX_IDX   ||
    6039       uiMode == DMM_CONTOUR_PREDTEX_D_IDX )
     6058    uiMode == DMM_WEDGE_PREDTEX_D_IDX   ||
     6059    uiMode == DMM_CONTOUR_PREDTEX_IDX   ||
     6060    uiMode == DMM_CONTOUR_PREDTEX_D_IDX )
    60406061  {
    60416062    if( (uiWidth != uiHeight) || (uiWidth < DMM_WEDGEMODEL_MIN_SIZE) || (uiWidth > DMM_WEDGEMODEL_MAX_SIZE) || ( ( uiMode == DMM_CONTOUR_PREDTEX_IDX || uiMode == DMM_CONTOUR_PREDTEX_D_IDX ) && uiWidth == 4 ) )
     
    60436064      bDMMAvailable = false;
    60446065    }
     6066
     6067#if FLEX_CODING_ORDER
     6068    if ( !bDMMAvailable34 )
     6069    {
     6070      bDMMAvailable = false;
     6071    }
     6072#endif
     6073
    60456074  }
    60466075#endif
     
    61486177  xDeltaDCQuantScaleDown( pcCU, riDeltaDC2 );
    61496178}
    6150 #endif
    6151 #if HHI_DMM_WEDGE_INTRA
     6179//#endif
     6180#if HHI_DMM_WEDGE_INTRA 
    61526181Void TEncSearch::findWedgeFullMinDist( TComDataCU*  pcCU,
    61536182                                       UInt         uiAbsPtIdx,
  • branches/HTM-4.0-Nokia/source/Lib/TLibEncoder/TEncSearch.h

    r100 r139  
    315315  Bool predIntraLumaDMMAvailable  ( UInt           uiMode,
    316316                                    UInt           uiWidth,
    317                                     UInt           uiHeight );
     317#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     318                                    UInt         uiHeight,
     319                                    Bool         bDMMAvailable34 );
     320#else
     321                                    UInt         uiHeight );
     322#endif
     323
    318324  Void xGetWedgeDeltaDCsMinDist   ( TComWedgelet*  pcWedgelet,
    319325                                    TComDataCU*    pcCU,
  • branches/HTM-4.0-Nokia/source/Lib/TLibEncoder/TEncSlice.cpp

    r102 r139  
    729729 {
    730730
    731    Int frameWidth = m_pcCfg->getSourceWidth();
     731 
     732#if 0
     733  Int frameWidth = m_pcCfg->getSourceWidth();
    732734   Pel* pVideoRec = m_pcRdCost->getVideoRecPicYuv()->getLumaAddr();
    733735   Int iVideoRecStride = m_pcRdCost->getVideoRecPicYuv()->getStride();
     
    746748     pDepthOrg += iDepthOrgStride;
    747749   }
     750#endif
    748751 }
    749752#endif
  • branches/HTM-4.0-Nokia/source/Lib/TLibEncoder/TEncTop.cpp

    r105 r139  
    768768  m_cSPS.setUseDMM( m_bUseDMM );
    769769#endif
     770
     771#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     772  m_cSPS.setUseDMM34( m_bUseDMM34 );
     773#endif
     774
     775
    770776#if HHI_MPI
    771777  m_cSPS.setUseMVI( m_bUseMVI );
Note: See TracChangeset for help on using the changeset viewer.