Changeset 1313 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComPic.cpp


Ignore:
Timestamp:
13 Aug 2015, 17:38:13 (9 years ago)
Author:
tech
Message:

Merged 14.1-update-dev1@1312.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibCommon/TComPic.cpp

    r1179 r1313  
    22 * License, included below. This software may be subject to other third party
    33 * and contributor rights, including patent rights, and no such rights are
    4  * granted under this license. 
     4 * granted under this license.
    55 *
    6 * Copyright (c) 2010-2015, ITU/ISO/IEC
     6 * Copyright (c) 2010-2015, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    5050, m_bUsedByCurr                           (false)
    5151, m_bIsLongTerm                           (false)
    52 , m_apcPicSym                             (NULL)
    5352, m_pcPicYuvPred                          (NULL)
    5453, m_pcPicYuvResi                          (NULL)
    5554, m_bReconstructed                        (false)
    5655, m_bNeededForOutput                      (false)
    57 #if H_MV
     56#if NH_MV
    5857, m_bPicOutputFlag                        (false)
    5958#endif
    6059, m_uiCurrSliceIdx                        (0)
    6160, m_bCheckLTMSB                           (false)
    62 #if H_MV
     61#if NH_MV
    6362, m_layerId                               (0)
    6463, m_viewId                                (0)
    65 #if H_3D
     64#if NH_3D
    6665, m_viewIndex                             (0)
    6766, m_isDepth                               (false)
     
    7069#endif
    7170#endif
    72 {
    73   m_apcPicYuv[0]      = NULL;
    74   m_apcPicYuv[1]      = NULL;
    75 #if H_3D_QTLPC
     71
     72{
     73  for(UInt i=0; i<NUM_PIC_YUV; i++)
     74  {
     75    m_apcPicYuv[i]      = NULL;
     76  }
     77#if NH_3D_QTLPC
    7678  m_bReduceBitsQTL    = 0;
    7779#endif
    78 #if H_3D_NBDV
     80#if NH_3D_NBDV
    7981  m_iNumDdvCandPics   = 0;
    8082  m_eRapRefList       = REF_PIC_LIST_0;
     
    8789}
    8890
    89 Void TComPic::create( Int iWidth, Int iHeight, UInt uiMaxWidth, UInt uiMaxHeight, UInt uiMaxDepth, Window &conformanceWindow, Window &defaultDisplayWindow,
    90                       Int *numReorderPics, Bool bIsVirtual)
    91 
    92 {
    93   m_apcPicSym     = new TComPicSym;  m_apcPicSym   ->create( iWidth, iHeight, uiMaxWidth, uiMaxHeight, uiMaxDepth );
     91Void TComPic::create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual)
     92{
     93  const ChromaFormat chromaFormatIDC = sps.getChromaFormatIdc();
     94  const Int          iWidth          = sps.getPicWidthInLumaSamples();
     95  const Int          iHeight         = sps.getPicHeightInLumaSamples();
     96  const UInt         uiMaxCuWidth    = sps.getMaxCUWidth();
     97  const UInt         uiMaxCuHeight   = sps.getMaxCUHeight();
     98  const UInt         uiMaxDepth      = sps.getMaxTotalCUDepth();
     99
     100  m_picSym.create( sps, pps, uiMaxDepth );
    94101  if (!bIsVirtual)
    95102  {
    96     m_apcPicYuv[0]  = new TComPicYuv;  m_apcPicYuv[0]->create( iWidth, iHeight, uiMaxWidth, uiMaxHeight, uiMaxDepth );
    97   }
    98   m_apcPicYuv[1]  = new TComPicYuv;  m_apcPicYuv[1]->create( iWidth, iHeight, uiMaxWidth, uiMaxHeight, uiMaxDepth );
    99  
     103    m_apcPicYuv[PIC_YUV_ORG    ]   = new TComPicYuv;  m_apcPicYuv[PIC_YUV_ORG     ]->create( iWidth, iHeight, chromaFormatIDC, uiMaxCuWidth, uiMaxCuHeight, uiMaxDepth, true );
     104    m_apcPicYuv[PIC_YUV_TRUE_ORG]  = new TComPicYuv;  m_apcPicYuv[PIC_YUV_TRUE_ORG]->create( iWidth, iHeight, chromaFormatIDC, uiMaxCuWidth, uiMaxCuHeight, uiMaxDepth, true );
     105  }
     106  m_apcPicYuv[PIC_YUV_REC]  = new TComPicYuv;  m_apcPicYuv[PIC_YUV_REC]->create( iWidth, iHeight, chromaFormatIDC, uiMaxCuWidth, uiMaxCuHeight, uiMaxDepth, true );
     107
    100108  // there are no SEI messages associated with this picture initially
    101109  if (m_SEIs.size() > 0)
     
    104112  }
    105113  m_bUsedByCurr = false;
    106 
    107   /* store conformance window parameters with picture */
    108   m_conformanceWindow = conformanceWindow;
    109  
    110   /* store display window parameters with picture */
    111   m_defaultDisplayWindow = defaultDisplayWindow;
    112 
    113   /* store number of reorder pics with picture */
    114   memcpy(m_numReorderPics, numReorderPics, MAX_TLAYER*sizeof(Int));
    115114
    116115#if H_3D_FCO
     
    125124#endif
    126125
    127   return;
    128126}
    129127
    130128Void TComPic::destroy()
    131129{
    132   if (m_apcPicSym)
    133   {
    134     m_apcPicSym->destroy();
    135     delete m_apcPicSym;
    136     m_apcPicSym = NULL;
    137   }
    138  
    139   if (m_apcPicYuv[0])
    140   {
    141     m_apcPicYuv[0]->destroy();
    142     delete m_apcPicYuv[0];
    143     m_apcPicYuv[0]  = NULL;
    144   }
    145  
    146   if (m_apcPicYuv[1])
    147   {
    148     m_apcPicYuv[1]->destroy();
    149     delete m_apcPicYuv[1];
    150     m_apcPicYuv[1]  = NULL;
    151   }
    152  
     130  m_picSym.destroy();
     131
     132  for(UInt i=0; i<NUM_PIC_YUV; i++)
     133  {
     134    if (m_apcPicYuv[i])
     135    {
     136      m_apcPicYuv[i]->destroy();
     137      delete m_apcPicYuv[i];
     138      m_apcPicYuv[i]  = NULL;
     139    }
     140  }
     141
    153142  deleteSEIs(m_SEIs);
    154143}
    155 #if H_3D
     144#if NH_3D
     145#if NH_3D_ARP
     146Void TComPic::getCUAddrAndPartIdx( Int iX, Int iY, Int& riCuAddr, Int& riAbsZorderIdx )
     147{
     148  Int iMaxCUWidth   = (Int) ( getPicSym()->getSPS().getMaxCUWidth()  );
     149  Int iMaxCuHeight  = (Int) ( getPicSym()->getSPS().getMaxCUHeight() );
     150
     151  UInt uiMaxTotalCUDepth = getPicSym()->getSPS().getMaxTotalCUDepth();
     152  Int iBaseUnitWidth  = iMaxCUWidth >> uiMaxTotalCUDepth;
     153  Int iBaseUnitHeight = iMaxCUWidth >> uiMaxTotalCUDepth;
     154
     155  Int iNumCuInWidth   = getPicYuvRec()->getWidth(COMPONENT_Y) / iMaxCUWidth;
     156  iNumCuInWidth      += ( getPicYuvRec()->getWidth(COMPONENT_Y) % iMaxCUWidth ) ? 1 : 0;
     157
     158
     159  Int iCuX            = iX / iMaxCUWidth;
     160  Int iCuY            = iY / iMaxCuHeight;
     161  Int iBaseX          = ( iX - iCuX * iMaxCUWidth  ) / iBaseUnitWidth;
     162  Int iBaseY          = ( iY - iCuY * iMaxCuHeight ) / iBaseUnitHeight;
     163  Int iCuSizeInBases  = iMaxCuHeight                 / iBaseUnitWidth;
     164
     165  riCuAddr            = iCuY   * iNumCuInWidth + iCuX;
     166  Int iRastPartIdx    = iBaseY * iCuSizeInBases  + iBaseX;
     167  riAbsZorderIdx      = g_auiRasterToZscan[ iRastPartIdx ];
     168}
     169#endif
    156170Void TComPic::compressMotion(Int scale)
    157171#else
     
    159173#endif
    160174{
    161   TComPicSym* pPicSym = getPicSym(); 
    162   for ( UInt uiCUAddr = 0; uiCUAddr < pPicSym->getFrameHeightInCU()*pPicSym->getFrameWidthInCU(); uiCUAddr++ )
    163   {
    164     TComDataCU* pcCU = pPicSym->getCU(uiCUAddr);
    165 #if H_3D
    166     pcCU->compressMV(scale);
     175  TComPicSym* pPicSym = getPicSym();
     176  for ( UInt uiCUAddr = 0; uiCUAddr < pPicSym->getNumberOfCtusInFrame(); uiCUAddr++ )
     177  {
     178    TComDataCU* pCtu = pPicSym->getCtu(uiCUAddr);
     179#if NH_3D
     180    pCtu->compressMV(scale);
    167181#else
    168     pcCU->compressMV();
    169 #endif
    170   }
     182    pCtu->compressMV();
     183#endif
     184   
     185  }
    171186}
    172187
    173188Bool  TComPic::getSAOMergeAvailability(Int currAddr, Int mergeAddr)
    174189{
    175   Bool mergeCtbInSliceSeg = (mergeAddr >= getPicSym()->getCUOrderMap(getCU(currAddr)->getSlice()->getSliceCurStartCUAddr()/getNumPartInCU()));
     190  Bool mergeCtbInSliceSeg = (mergeAddr >= getPicSym()->getCtuTsToRsAddrMap(getCtu(currAddr)->getSlice()->getSliceCurStartCtuTsAddr()));
    176191  Bool mergeCtbInTile     = (getPicSym()->getTileIdxMap(mergeAddr) == getPicSym()->getTileIdxMap(currAddr));
    177192  return (mergeCtbInSliceSeg && mergeCtbInTile);
    178193}
    179194
    180 #if H_MV
     195UInt TComPic::getSubstreamForCtuAddr(const UInt ctuAddr, const Bool bAddressInRaster, TComSlice *pcSlice)
     196{
     197  UInt subStrm;
     198  const bool bWPPEnabled=pcSlice->getPPS()->getEntropyCodingSyncEnabledFlag();
     199  const TComPicSym &picSym            = *(getPicSym());
     200
     201  if ((bWPPEnabled && picSym.getFrameHeightInCtus()>1) || (picSym.getNumTiles()>1)) // wavefronts, and possibly tiles being used.
     202  {
     203    if (bWPPEnabled)
     204    {
     205      const UInt ctuRsAddr                = bAddressInRaster?ctuAddr : picSym.getCtuTsToRsAddrMap(ctuAddr);
     206      const UInt frameWidthInCtus         = picSym.getFrameWidthInCtus();
     207      const UInt tileIndex                = picSym.getTileIdxMap(ctuRsAddr);
     208      const UInt numTileColumns           = (picSym.getNumTileColumnsMinus1()+1);
     209      const TComTile *pTile               = picSym.getTComTile(tileIndex);
     210      const UInt firstCtuRsAddrOfTile     = pTile->getFirstCtuRsAddr();
     211      const UInt tileYInCtus              = firstCtuRsAddrOfTile / frameWidthInCtus;
     212      // independent tiles => substreams are "per tile"
     213      const UInt ctuLine                  = ctuRsAddr / frameWidthInCtus;
     214      const UInt startingSubstreamForTile =(tileYInCtus*numTileColumns) + (pTile->getTileHeightInCtus()*(tileIndex%numTileColumns));
     215      subStrm = startingSubstreamForTile + (ctuLine - tileYInCtus);
     216    }
     217    else
     218    {
     219      const UInt ctuRsAddr                = bAddressInRaster?ctuAddr : picSym.getCtuTsToRsAddrMap(ctuAddr);
     220      const UInt tileIndex                = picSym.getTileIdxMap(ctuRsAddr);
     221      subStrm=tileIndex;
     222    }
     223  }
     224  else
     225  {
     226    // dependent tiles => substreams are "per frame".
     227    subStrm = 0;
     228  }
     229  return subStrm;
     230}
     231
     232#if NH_MV
    181233Void TComPic::print( Bool legend )
    182234{
     
    204256}
    205257
    206 #if H_3D
     258#if NH_3D
    207259TComPic* TComPicLists::getPic( Int viewIndex, Bool depthFlag, Int poc )
    208260{
     
    250302}
    251303
    252 #if H_3D
     304#if NH_3D
    253305TComPicYuv* TComPicLists::getPicYuv( Int viewIndex, Bool depthFlag, Int poc, Bool recon )
    254306
     
    256308  return getPicYuv( layerIdInNuh, poc, recon );
    257309}
    258 #if H_3D_ARP
     310#if NH_3D_ARP
    259311TComList<TComPic*>* TComPicLists::getPicList( Int layerIdInNuh )
    260312{
     
    274326#endif
    275327#endif
    276 #endif // H_MV
    277 
    278 #if H_3D_NBDV
    279 Int TComPic::getDisCandRefPictures( Int iColPOC )
     328#endif // NH_MV
     329
     330#if NH_3D_NBDV
     331Int TComPic::getDisCandRefPictures(Int iColPOC)
    280332{
    281333  UInt       uiTempLayerCurr = 7;
     
    283335  UInt       numDdvCandPics  = 0;
    284336
    285   if ( !currSlice->getEnableTMVPFlag() )
     337  if(!currSlice->getEnableTMVPFlag())
     338  {
    286339    return numDdvCandPics;
     340  }
    287341
    288342  numDdvCandPics += 1;
     
    291345  UInt pocDiff = 255;
    292346
    293   for(UInt lpNr = 0; lpNr < (currSlice->isInterB() ? 2: 1); lpNr ++)
    294   {
    295     UInt x = lpNr ? currSlice->getColFromL0Flag() : 1 - currSlice->getColFromL0Flag();
    296 
    297     for (UInt i = 0; i < currSlice->getNumRefIdx(RefPicList(x)); i++)
     347  for(UInt lpNr = 0; lpNr < (currSlice->isInterB() ? 2: 1); lpNr++)
     348  {
     349    Bool x = lpNr ? currSlice->getColFromL0Flag() : 1 - currSlice->getColFromL0Flag();
     350
     351    for(UInt i = 0; i < currSlice->getNumRefIdx(RefPicList(x)); i++)
    298352    {
    299353      if(currSlice->getViewIndex() == currSlice->getRefPic((RefPicList)x, i)->getViewIndex()
    300         && (x == currSlice->getColFromL0Flag()||currSlice->getRefPOC((RefPicList)x, i)!= iColPOC) && numDdvCandPics!=2)
     354         && (x == currSlice->getColFromL0Flag() || currSlice->getRefPOC((RefPicList)x, i) != iColPOC) && numDdvCandPics != 2)
    301355      {
    302356        TComSlice* refSlice    = currSlice->getRefPic((RefPicList)x, i)->getSlice(getCurrSliceIdx());
    303         Bool       bRAP        = (refSlice->getViewIndex() && refSlice->isIRAP())? 1: 0;
     357        Bool       bRAP        = (refSlice->getViewIndex() && refSlice->isIRAP()) ? 1 : 0;
    304358        UInt       uiTempLayer = currSlice->getRefPic((RefPicList)x, i)->getSlice(getCurrSliceIdx())->getTLayer();
    305359       
    306         if( bRAP )
     360        if(bRAP)
    307361        {
    308362          this->setRapRefIdx(i);
     
    323377  UInt idx = 0;
    324378 
    325   for(UInt lpNr = 0; lpNr < (currSlice->isInterB() ? 2: 1); lpNr ++)
    326   {
    327     UInt x = lpNr? currSlice->getColFromL0Flag() : 1-currSlice->getColFromL0Flag();
     379  for(UInt lpNr = 0; lpNr < (currSlice->isInterB() ? 2 : 1); lpNr++)
     380  {
     381    Bool x = lpNr ? currSlice->getColFromL0Flag() : 1 - currSlice->getColFromL0Flag();
    328382   
    329     for (UInt i = 0; i < currSlice->getNumRefIdx(RefPicList(x)); i++)
     383    for(UInt i = 0; i < currSlice->getNumRefIdx(RefPicList(x)); i++)
    330384    {
    331385      Int iTempPoc = currSlice->getRefPic((RefPicList)x, i)->getPOC();
    332       Int iTempDiff = (iTempPoc > pocCurr) ? (iTempPoc - pocCurr): (pocCurr - iTempPoc);
     386      Int iTempDiff = (iTempPoc > pocCurr) ? (iTempPoc - pocCurr) : (pocCurr - iTempPoc);
    333387     
    334       if(currSlice->getViewIndex() == currSlice->getRefPic((RefPicList)x, i)->getViewIndex() &&  (x == currSlice->getColFromL0Flag()||currSlice->getRefPOC((RefPicList)x, i)!= iColPOC)
    335         && currSlice->getRefPic((RefPicList)x, i)->getSlice(getCurrSliceIdx())->getTLayer() == uiTempLayerCurr && pocDiff > iTempDiff)
     388      if(currSlice->getViewIndex() == currSlice->getRefPic((RefPicList)x, i)->getViewIndex() && (x == currSlice->getColFromL0Flag() || currSlice->getRefPOC((RefPicList)x, i) != iColPOC)
     389         && currSlice->getRefPic((RefPicList)x, i)->getSlice(getCurrSliceIdx())->getTLayer() == uiTempLayerCurr && pocDiff > iTempDiff)
    336390      {
    337391        pocDiff = iTempDiff;
     
    342396  }
    343397
    344   if( pocDiff < 255 )
     398  if(pocDiff < 255)
    345399  {
    346400    this->setRapRefIdx(idx);
    347     this->setRapRefList((RefPicList) z );
     401    this->setRapRefList((RefPicList) z);
    348402    numDdvCandPics = 2;
    349403  }
     
    356410  TComSlice* currSlice = getSlice(getCurrSliceIdx());
    357411  const Int numCandPics = this->getNumDdvCandPics();
     412
    358413  for(Int curCandPic = 0; curCandPic < numCandPics; curCandPic++)
    359414  {
    360415    RefPicList eCurRefPicList   = REF_PIC_LIST_0 ;
    361416    Int        curCandPicRefIdx = 0;
    362     if( curCandPic == 0 )
     417    if(curCandPic == 0)
    363418    {
    364       eCurRefPicList   = RefPicList(currSlice->isInterB() ? 1-currSlice->getColFromL0Flag() : 0);
     419      eCurRefPicList   = RefPicList(currSlice->isInterB() ? 1 - currSlice->getColFromL0Flag() : 0);
    365420      curCandPicRefIdx = currSlice->getColRefIdx();
    366421    }
     
    370425      curCandPicRefIdx = this->getRapRefIdx();
    371426    }
    372     TComPic* pcCandColPic = currSlice->getRefPic( eCurRefPicList, curCandPicRefIdx);
    373     TComSlice* pcCandColSlice = pcCandColPic->getSlice(0);// currently only support single slice
     427
     428    TComPic* pcCandColPic = currSlice->getRefPic(eCurRefPicList, curCandPicRefIdx);
     429    TComSlice* pcCandColSlice = pcCandColPic->getSlice(0); // currently only support single slice
    374430
    375431    if(!pcCandColSlice->isIntra())
    376432    {
    377       for( Int iColRefDir = 0; iColRefDir < (pcCandColSlice->isInterB() ? 2: 1); iColRefDir ++ )
    378       {
    379         for( Int iColRefIdx =0; iColRefIdx < pcCandColSlice->getNumRefIdx(( RefPicList )iColRefDir ); iColRefIdx++)
     433      for(Int iColRefDir = 0; iColRefDir < (pcCandColSlice->isInterB() ? 2 : 1); iColRefDir++)
     434      {
     435        for(Int iColRefIdx = 0; iColRefIdx < pcCandColSlice->getNumRefIdx((RefPicList)iColRefDir); iColRefIdx++)
    380436        {
    381437          m_abTIVRINCurrRL[curCandPic][iColRefDir][iColRefIdx] = false;
    382438          Int iColViewIdx    = pcCandColSlice->getViewIndex();
    383           Int iColRefViewIdx = pcCandColSlice->getRefPic( ( RefPicList )iColRefDir, iColRefIdx)->getViewIndex();
     439          Int iColRefViewIdx = pcCandColSlice->getRefPic((RefPicList)iColRefDir, iColRefIdx)->getViewIndex();
    384440          if(iColViewIdx == iColRefViewIdx)
     441          {
    385442            continue;
    386 
    387           for(Int iCurrRefDir = 0;(iCurrRefDir < (currSlice->isInterB() ? 2: 1)) && (m_abTIVRINCurrRL[curCandPic][iColRefDir][iColRefIdx] == false ); iCurrRefDir++)
     443          }
     444
     445          for(Int iCurrRefDir = 0; (iCurrRefDir < (currSlice->isInterB() ? 2 : 1)) && (m_abTIVRINCurrRL[curCandPic][iColRefDir][iColRefIdx] == false); iCurrRefDir++)
    388446          {
    389             for( Int iCurrRefIdx =0; iCurrRefIdx < currSlice->getNumRefIdx(( RefPicList )iCurrRefDir ); iCurrRefIdx++)
     447            for(Int iCurrRefIdx = 0; iCurrRefIdx < currSlice->getNumRefIdx((RefPicList)iCurrRefDir); iCurrRefIdx++)
    390448            {
    391               if( currSlice->getRefPic( ( RefPicList )iCurrRefDir, iCurrRefIdx )->getViewIndex() == iColRefViewIdx )
     449              if(currSlice->getRefPic((RefPicList)iCurrRefDir, iCurrRefIdx)->getViewIndex() == iColRefViewIdx)
    392450              { 
    393451                m_abTIVRINCurrRL[curCandPic][iColRefDir][iColRefIdx] = true;
     
    401459  }
    402460}
     461
    403462Bool TComPic::isTempIVRefValid(Int currCandPic, Int iColRefDir, Int iColRefIdx)
    404463{
     
    406465}
    407466
    408 Void TComPic::checkTextureRef(  )
     467Void TComPic::checkTextureRef()
    409468{
    410469  TComSlice* pcCurrSlice = getSlice(getCurrSliceIdx());
    411   TComPic* pcTextPic = pcCurrSlice->getTexturePic();
     470  TComPic* pcTextPic = pcCurrSlice->getIvPic(0, getViewIndex());
    412471#if H_3D_FCO
    413472  if ( pcTextPic )
    414473  {
    415474#endif
    416 
    417   TComSlice* pcTextSlice = pcTextPic->getSlice(0); // currently only support single slice
    418 
    419   for( Int iTextRefDir = 0; (iTextRefDir < (pcTextSlice->isInterB()? 2:1) ) && !pcTextSlice->isIntra(); iTextRefDir ++ )
    420   {
    421     for( Int iTextRefIdx =0; iTextRefIdx<pcTextSlice->getNumRefIdx(( RefPicList )iTextRefDir ); iTextRefIdx++)
    422     {
    423       Int iTextRefPOC    = pcTextSlice->getRefPOC( ( RefPicList )iTextRefDir, iTextRefIdx);
    424       Int iTextRefViewId = pcTextSlice->getRefPic( ( RefPicList )iTextRefDir, iTextRefIdx)->getViewIndex();
    425       m_aiTexToDepRef[iTextRefDir][iTextRefIdx] = -1;
    426       Int iCurrRefDir = iTextRefDir;
    427       for( Int iCurrRefIdx =0; ( iCurrRefIdx<pcCurrSlice->getNumRefIdx(( RefPicList )iCurrRefDir ) ) && ( m_aiTexToDepRef[iTextRefDir][iTextRefIdx] < 0 ) ; iCurrRefIdx++)
    428       {
    429         if( pcCurrSlice->getRefPOC( ( RefPicList )iCurrRefDir, iCurrRefIdx ) == iTextRefPOC &&
    430           pcCurrSlice->getRefPic( ( RefPicList )iCurrRefDir, iCurrRefIdx)->getViewIndex() == iTextRefViewId )
    431         { 
    432           m_aiTexToDepRef[iTextRefDir][iTextRefIdx] = iCurrRefIdx;
     475    TComSlice* pcTextSlice = pcTextPic->getSlice(0); // currently only support single slice
     476
     477    for(Int iTextRefDir = 0; (iTextRefDir < (pcTextSlice->isInterB() ? 2 :1) ) && !pcTextSlice->isIntra(); iTextRefDir++)
     478    {
     479      for(Int iTextRefIdx =0; iTextRefIdx < pcTextSlice->getNumRefIdx((RefPicList)iTextRefDir); iTextRefIdx++)
     480      {
     481        Int iTextRefPOC    = pcTextSlice->getRefPOC((RefPicList)iTextRefDir, iTextRefIdx);
     482        Int iTextRefViewId = pcTextSlice->getRefPic((RefPicList)iTextRefDir, iTextRefIdx)->getViewIndex();
     483        m_aiTexToDepRef[iTextRefDir][iTextRefIdx] = -1;
     484        Int iCurrRefDir = iTextRefDir;
     485
     486        for(Int iCurrRefIdx = 0; (iCurrRefIdx<pcCurrSlice->getNumRefIdx((RefPicList)iCurrRefDir)) && (m_aiTexToDepRef[iTextRefDir][iTextRefIdx] < 0); iCurrRefIdx++)
     487        {
     488          if(pcCurrSlice->getRefPOC((RefPicList)iCurrRefDir, iCurrRefIdx ) == iTextRefPOC &&
     489             pcCurrSlice->getRefPic((RefPicList)iCurrRefDir, iCurrRefIdx)->getViewIndex() == iTextRefViewId)
     490          { 
     491            m_aiTexToDepRef[iTextRefDir][iTextRefIdx] = iCurrRefIdx;
     492          }
    433493        }
    434494      }
    435495    }
    436 
    437   }
    438496#if H_3D_FCO
    439497  }
    440498#endif
    441 
    442499}
    443500
     
    447504}
    448505#endif
     506
     507
    449508//! \}
Note: See TracChangeset for help on using the changeset viewer.