Changeset 12 in 3DVCSoftware for branches/0.2-poznan-univ/source/Lib/TLibDecoder


Ignore:
Timestamp:
6 Feb 2012, 00:52:17 (13 years ago)
Author:
poznan-univ
Message:

Poznan Tools

  • Depth base motion vector prediction
Location:
branches/0.2-poznan-univ/source/Lib/TLibDecoder
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r11 r12  
    271271      pcSPS->setUseMVI( uiCode ? true : false );
    272272#endif
     273#if POZNAN_NONLINEAR_DEPTH
     274#if POZNAN_NONLINEAR_DEPTH_SEND_AS_BYTE
     275      uiCode = 0;
     276      xReadCode(8, uiCode);
     277      pcSPS->setDepthPower(dequantizeDepthPower(uiCode));
     278#else
     279      uiCode = 0;
     280      xReadCode(sizeof(float)*8, uiCode); // We do not send seign
     281      //uiCode &= ~0x80000000;
     282      pcSPS->setDepthPower(*((float*)&uiCode)); 
     283#endif
     284      printf("\nfDepthPower = %f", pcSPS->getDepthPower());
     285#endif
    273286    }
    274287    else
     
    331344    }
    332345  }
    333 
    334346  return;
    335347}
     
    26212633
    26222634
    2623 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI
     2635#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI || POZNAN_EIVD
    26242636Void
    26252637TDecCavlc::parseMergeIndexMV( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth )
     
    26322644    uiNumCand++;
    26332645#endif
     2646#if POZNAN_EIVD
     2647  UInt uiModIdx;
     2648  const Bool bEIVDAvailable = pcCU->getSlice()->getMP()->isEIVDEnabled();
     2649#endif
    26342650  for( UInt uiIdx = 0; uiIdx < MRG_MAX_NUM_CANDS; uiIdx++ )
    26352651  {
     
    26562672    if( uiIdx > uiMviMergePos )
    26572673    {
     2674#if POZNAN_EIVD
     2675          if(bEIVDAvailable)
     2676          {
     2677                  if(uiIdx==POZNAN_EIVD_MERGE_POS) uiModIdx = POZNAN_EIVD_MRG_CAND;
     2678                  else if(uiIdx>POZNAN_EIVD_MERGE_POS) uiModIdx = uiIdx--;
     2679                  else uiModIdx = uiIdx;
     2680          }
     2681          else uiModIdx = uiIdx;
     2682          if( pcCU->getNeighbourCandIdx( uiModIdx-1, uiAbsPartIdx ) != uiModIdx )
     2683          {
     2684        ruiMergeIndex++;
     2685      }
     2686#else
    26582687      if( pcCU->getNeighbourCandIdx( uiIdx - 1, uiAbsPartIdx ) != uiIdx )
    26592688      {
    26602689        ruiMergeIndex++;
    26612690      }
     2691#endif
    26622692    }
    26632693    else if( uiIdx < uiMviMergePos )
    26642694#endif
     2695#if POZNAN_EIVD
     2696        if(bEIVDAvailable)
     2697        {
     2698          if(uiIdx==POZNAN_EIVD_MERGE_POS) uiModIdx = POZNAN_EIVD_MRG_CAND;
     2699          else if(uiIdx>POZNAN_EIVD_MERGE_POS) uiModIdx = uiIdx--;
     2700          else uiModIdx = uiIdx;
     2701        }
     2702        else uiModIdx = uiIdx;
     2703        if( pcCU->getNeighbourCandIdx( uiModIdx, uiAbsPartIdx ) != uiModIdx + 1 )
     2704        {
     2705          ruiMergeIndex++;
     2706        }
     2707#else
    26652708    if( pcCU->getNeighbourCandIdx( uiIdx, uiAbsPartIdx ) != uiIdx + 1 )
    26662709    {
    26672710      ruiMergeIndex++;
    26682711    }
     2712#endif
    26692713  }
    26702714#if HHI_MPI
     
    26762720  {
    26772721    pcCU->setTextureModeDepthSubParts( uiDepth, uiAbsPartIdx, uiDepth );
     2722  }
     2723#endif
     2724#if POZNAN_EIVD
     2725  if(bEIVDAvailable)
     2726  {       
     2727        if(ruiMergeIndex==POZNAN_EIVD_MERGE_POS) ruiMergeIndex = POZNAN_EIVD_MRG_CAND;
     2728        else if(ruiMergeIndex>POZNAN_EIVD_MERGE_POS) ruiMergeIndex--;
    26782729  }
    26792730#endif
     
    26912742Void TDecCavlc::parseMergeIndex ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth )
    26922743{
    2693 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI
     2744#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI || POZNAN_EIVD
    26942745  if(
    26952746#if HHI_INTER_VIEW_MOTION_PRED
     
    26982749#if HHI_MPI
    26992750      ( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) ||
     2751#endif
     2752#if     POZNAN_EIVD 
     2753          ( pcCU->getSlice()->getMP()->isEIVDEnabled() ) ||
    27002754#endif
    27012755      0
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecCAVLC.h

    r5 r12  
    195195  Void parseMergeFlag       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPUIdx );
    196196  Void parseMergeIndex      ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth );
    197 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI
     197#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI || POZNAN_EIVD
    198198  Void parseMergeIndexMV    ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth );
    199199#endif
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecCu.cpp

    r11 r12  
    4949  m_ppcYuvReco    = NULL;
    5050  m_ppcYuvResPred = NULL;
    51 #if POZNAN_AVAIL_MAP
     51#if POZNAN_CU_SKIP
    5252  m_ppcYuvAvail   = NULL;
    5353#endif
    54 #if POZNAN_SYNTH_VIEW
     54#if POZNAN_CU_SYNTH
    5555  m_ppcYuvSynth   = NULL;
    5656#endif
     
    8181  m_ppcYuvReco    = new TComYuv*    [m_uiMaxDepth-1];
    8282  m_ppcYuvResPred = new TComYuv*    [m_uiMaxDepth-1];
    83 #if POZNAN_AVAIL_MAP
     83#if POZNAN_CU_SKIP
    8484  m_ppcYuvAvail   = new TComYuv*    [m_uiMaxDepth-1];
    8585#endif
    86 #if POZNAN_SYNTH_VIEW
     86#if POZNAN_CU_SYNTH
    8787  m_ppcYuvSynth   = new TComYuv*    [m_uiMaxDepth-1];
    8888#endif
     
    9999    m_ppcYuvReco   [ui] = new TComYuv;    m_ppcYuvReco   [ui]->create( uiWidth, uiHeight );
    100100    m_ppcYuvResPred[ui] = new TComYuv;    m_ppcYuvResPred[ui]->create( uiWidth, uiHeight );
    101 #if POZNAN_AVAIL_MAP
     101#if POZNAN_CU_SKIP
    102102    m_ppcYuvAvail  [ui] = new TComYuv;    m_ppcYuvAvail  [ui]->create( uiWidth, uiHeight );
    103103#endif
    104 #if POZNAN_SYNTH_VIEW
     104#if POZNAN_CU_SYNTH
    105105    m_ppcYuvSynth  [ui] = new TComYuv;    m_ppcYuvSynth  [ui]->create( uiWidth, uiHeight );
    106106#endif
     
    125125    m_ppcYuvReco   [ui]->destroy(); delete m_ppcYuvReco   [ui]; m_ppcYuvReco   [ui] = NULL;
    126126    m_ppcYuvResPred[ui]->destroy(); delete m_ppcYuvResPred[ui]; m_ppcYuvResPred[ui] = NULL;
    127 #if POZNAN_AVAIL_MAP
     127#if POZNAN_CU_SKIP
    128128    m_ppcYuvAvail  [ui]->destroy(); delete m_ppcYuvAvail  [ui]; m_ppcYuvAvail  [ui] = NULL;
    129129#endif
    130 #if POZNAN_SYNTH_VIEW
     130#if POZNAN_CU_SYNTH
    131131    m_ppcYuvSynth  [ui]->destroy(); delete m_ppcYuvSynth  [ui]; m_ppcYuvSynth  [ui] = NULL;
    132132#endif
     
    137137  delete [] m_ppcYuvReco;    m_ppcYuvReco    = NULL;
    138138  delete [] m_ppcYuvResPred; m_ppcYuvResPred = NULL;
    139 #if POZNAN_AVAIL_MAP
     139#if POZNAN_CU_SKIP
    140140  delete [] m_ppcYuvAvail;   m_ppcYuvAvail   = NULL;
    141141#endif
    142 #if POZNAN_SYNTH_VIEW
     142#if POZNAN_CU_SYNTH
    143143  delete [] m_ppcYuvSynth;   m_ppcYuvSynth   = NULL;
    144144#endif
     
    217217  TComPic* pcPic = pcCU->getPic();
    218218
    219 #if POZNAN_ENCODE_ONLY_DISOCCLUDED_CU
     219#if POZNAN_CU_SKIP
    220220  Bool bWholeCUCanBeSynthesized = false;
    221221  Bool bOneSubCUCanNotBeSynthesied = false;
     
    267267  if( ( uiRPelX < pcCU->getSlice()->getSPS()->getWidth() ) && ( uiBPelY < pcCU->getSlice()->getSPS()->getHeight() ) )
    268268  {
    269 #if POZNAN_ENCODE_ONLY_DISOCCLUDED_CU
     269#if POZNAN_CU_SKIP
    270270    if(bOneSubCUCanNotBeSynthesied && (uiDepth < g_uiMaxCUDepth - g_uiAddCUDepth )) // KUBA SYNTH check if CU has 3 synthesied subCU - no split flag is send in that case and CU split is assumed
    271271    {
     
    446446{
    447447  TComPic* pcPic = pcCU->getPic();
    448 #if POZNAN_SYNTH_VIEW
     448#if POZNAN_CU_SYNTH
    449449  if(pcPic->getPicYuvSynth())  m_ppcYuvSynth[uiDepth]->copyFromPicYuv( pcPic->getPicYuvSynth(), pcCU->getAddr(), uiAbsPartIdx );
    450450#endif
    451 #if POZNAN_AVAIL_MAP
     451#if POZNAN_CU_SKIP
    452452  if(pcPic->getPicYuvAvail())  m_ppcYuvAvail[uiDepth]->copyFromPicYuv( pcPic->getPicYuvAvail(), pcCU->getAddr(), uiAbsPartIdx );
    453453#endif
     
    496496      xReconIntraQT( m_ppcCU[uiDepth], uiAbsPartIdx, uiDepth );
    497497      break;
    498 #if POZNAN_ENCODE_ONLY_DISOCCLUDED_CU
     498#if POZNAN_CU_SKIP
    499499    case MODE_SYNTH:
    500500    //  break;
    501 #if POZNAN_FILL_OCCLUDED_CU_WITH_SYNTHESIS
    502501      m_ppcYuvReco[uiDepth]->copyFromPicYuv(pcPic->getPicYuvSynth(), pcCU->getAddr(), uiAbsPartIdx);
    503 #else
    504       m_ppcYuvReco[uiDepth]->copyFromPicYuv(pcPic->getPicYuvAvail(), pcCU->getAddr(), uiAbsPartIdx); //Poprawiæ
    505 #endif
     502      //m_ppcYuvReco[uiDepth]->copyFromPicYuv(pcPic->getPicYuvAvail(), pcCU->getAddr(), uiAbsPartIdx); //Poprawiæ
    506503      //m_ppcYuvReco[uiDepth]->clear();
    507504      break;
     
    581578    m_pcPrediction->predIntraLumaAng( pcPattern, pcCU->getLumaIntraDir(uiPartIdx), pPred, uiStride, uiWidth, uiHeight, pcCU, bAboveAvail, bLeftAvail );
    582579   
     580#if POZNAN_TEXTURE_TU_DELTA_QP_ACCORDING_TO_DEPTH
     581    m_pcTrQuant->setQPforQuant( pcCU->getQP(uiPartIdx) + pcCU->getQpOffsetForTextCU(uiPartIdx, true), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_LUMA );
     582#else
    583583    m_pcTrQuant->setQPforQuant( pcCU->getQP(uiPartIdx), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_LUMA );
     584#endif
    584585#if INTRA_DST_TYPE_7
    585586  m_pcTrQuant->invtransformNxN(TEXT_LUMA, pcCU->getLumaIntraDir(uiPartIdx), pResi, uiStride, pCoeff, uiWidth, uiHeight );
     
    778779  }
    779780  //===== inverse transform =====
     781#if POZNAN_TEXTURE_TU_DELTA_QP_ACCORDING_TO_DEPTH
     782    m_pcTrQuant->setQPforQuant( pcCU->getQP(0) + pcCU->getQpOffsetForTextCU(uiAbsPartIdx, true), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_LUMA );
     783#else
    780784  m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_LUMA );
     785#endif
    781786#if INTRA_DST_TYPE_7
    782787  m_pcTrQuant->invtransformNxN( TEXT_LUMA, pcCU->getLumaIntraDir( uiAbsPartIdx ), piResi, uiStride, pcCoeff, uiWidth, uiHeight );
     
    885890
    886891  //===== inverse transform =====
     892#if POZNAN_TEXTURE_TU_DELTA_QP_ACCORDING_TO_DEPTH
     893  m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0) + pcCU->getQpOffsetForTextCU(uiAbsPartIdx, true), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), eText );
     894#else
    887895  m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), eText );
     896#endif
    888897#if INTRA_DST_TYPE_7
    889898  m_pcTrQuant->invtransformNxN( eText, REG_DCT, piResi, uiStride, pcCoeff, uiWidth, uiHeight );
     
    10611070  piCoeff = pcCU->getCoeffY();
    10621071  pResi = m_ppcYuvResi[uiDepth]->getLumaAddr();
     1072#if POZNAN_TEXTURE_TU_DELTA_QP_ACCORDING_TO_DEPTH
     1073  Int QPoffset = pcCU->getQpOffsetForTextCU(uiAbsPartIdx, false);
     1074  m_pcTrQuant->setQPforQuant  ( pcCU->getQP(uiAbsPartIdx) + QPoffset, !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_LUMA );
     1075#else
    10631076  m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_LUMA );
     1077#endif
    10641078  m_pcTrQuant->invRecurTransformNxN ( pcCU, 0, TEXT_LUMA, pResi, 0, m_ppcYuvResi[uiDepth]->getStride(), uiWidth, uiHeight, uiLumaTrMode, 0, piCoeff );
    10651079 
    10661080  // Cb and Cr
     1081#if POZNAN_TEXTURE_TU_DELTA_QP_ACCORDING_TO_DEPTH
     1082    m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ) + QPoffset, !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA );
     1083#else
    10671084  m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA );
     1085#endif
    10681086 
    10691087  uiWidth  >>= 1;
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecCu.h

    r11 r12  
    6161  TComYuv**           m_ppcYuvReco;       ///< array of prediction & reconstruction buffer
    6262  TComYuv**           m_ppcYuvResPred;    ///< residual prediction buffer
    63 #if POZNAN_AVAIL_MAP
     63#if POZNAN_CU_SKIP
    6464  TComYuv**           m_ppcYuvAvail;      ///< array of available map buffer
    6565#endif
    66 #if POZNAN_SYNTH_VIEW
     66#if POZNAN_CU_SYNTH
    6767  TComYuv**           m_ppcYuvSynth;      ///< array of synth buffer
    6868#endif
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecEntropy.cpp

    r5 r12  
    430430  pcCU->setInterDirSubParts( puhInterDirNeighbours[uiMergeIndex], uiAbsPartIdx, uiPartIdx, uiDepth );
    431431
     432#if POZNAN_EIVD_CALC_PRED_DATA
     433  Int ref_idx0_EIVD,ref_idx1_EIVD;
     434  TComMv cMv0_EIVD( 0, 0 ),cMv1_EIVD( 0, 0 );
     435  if(uiMergeIndex==POZNAN_EIVD_MRG_CAND)
     436  {     
     437    pcCU->getCUMvField2nd( REF_PIC_LIST_0 )->setAllMvField( pcMvFieldNeighbours[ 2*uiMergeIndex ].getMv(), pcMvFieldNeighbours[ 2*uiMergeIndex ].getRefIdx(), eCUMode, uiAbsPartIdx, uiPartIdx, uiDepth );
     438    pcCU->getCUMvField2nd( REF_PIC_LIST_1 )->setAllMvField( pcMvFieldNeighbours[ 2*uiMergeIndex + 1 ].getMv(), pcMvFieldNeighbours[ 2*uiMergeIndex + 1 ].getRefIdx(), eCUMode, uiAbsPartIdx, uiPartIdx, uiDepth );     
     439    pcCU->getSlice()->getMP()->calcEIVDPredData(pcCU, uiAbsPartIdx, ref_idx0_EIVD, cMv0_EIVD, ref_idx1_EIVD, cMv1_EIVD);
     440  }
     441#endif
     442
    432443  TComMv cTmpMv( 0, 0 );
    433444  if ( pcCU->getSlice()->getNumRefIdx( REF_PIC_LIST_0 ) > 0  ) //if ( ref. frame list0 has at least 1 entry )
     
    436447    pcCU->setMVPNumSubParts( 0, REF_PIC_LIST_0, uiAbsPartIdx, uiPartIdx, uiDepth);
    437448    pcCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvd( cTmpMv, eCUMode, uiAbsPartIdx, uiPartIdx, uiDepth );
     449#if POZNAN_EIVD_CALC_PRED_DATA
     450    if(uiMergeIndex==POZNAN_EIVD_MRG_CAND)
     451       pcCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvField( cMv0_EIVD, ref_idx0_EIVD, eCUMode, uiAbsPartIdx, uiPartIdx, uiDepth );
     452    else
     453#endif
    438454    pcCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvField( pcMvFieldNeighbours[ 2*uiMergeIndex ].getMv(), pcMvFieldNeighbours[ 2*uiMergeIndex ].getRefIdx(), eCUMode, uiAbsPartIdx, uiPartIdx, uiDepth );
    439455
     
    444460    pcCU->setMVPNumSubParts( 0, REF_PIC_LIST_1, uiAbsPartIdx, uiPartIdx, uiDepth);
    445461    pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvd( cTmpMv, eCUMode, uiAbsPartIdx, uiPartIdx, uiDepth );
     462#if POZNAN_EIVD_CALC_PRED_DATA
     463    if(uiMergeIndex==POZNAN_EIVD_MRG_CAND)
     464       pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMv1_EIVD, ref_idx1_EIVD, eCUMode, uiAbsPartIdx, uiPartIdx, uiDepth );
     465    else
     466#endif
    446467    pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( pcMvFieldNeighbours[ 2*uiMergeIndex + 1 ].getMv(), pcMvFieldNeighbours[ 2*uiMergeIndex + 1 ].getRefIdx(), eCUMode, uiAbsPartIdx, uiPartIdx, uiDepth );
    447468  }
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecGop.cpp

    r5 r12  
    199199#endif
    200200
     201#if POZNAN_MP
     202        if( uiStartCUAddr == 0 )
     203    {
     204#if POZNAN_MP_USE_DEPTH_MAP_GENERATION
     205          pcSlice->getMP()->setDepthMapGenerator(m_pcDepthMapGenerator);
     206#endif
     207      pcSlice->getMP()->pairMultiview(rpcPic);
     208        }
     209#endif
     210
    201211    // decode slice
    202212    m_pcSliceDecoder->decompressSlice(pcBitstream, rpcPic);
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecSbac.cpp

    r5 r12  
    579579
    580580
    581 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI
     581#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI || POZNAN_EIVD
    582582Void TDecSbac::parseMergeIndexMV( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth )
    583583{
     
    585585  const Bool bMVIAvailable = pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE;
    586586  const UInt uiMviMergePos = bMVIAvailable ? HHI_MPI_MERGE_POS : MRG_MAX_NUM_CANDS;
     587#endif
     588#if POZNAN_EIVD
     589  const Bool bEIVDAvailable = pcCU->getSlice()->getMP()->isEIVDEnabled();
     590  Bool bEIVDModifyMergeIdx = true;
    587591#endif
    588592  //--- set number of candidates and availability ---
     
    611615    }
    612616  }
     617
     618#if POZNAN_EIVD
     619  if(bEIVDAvailable)
     620  {
     621    UInt uiEIVDMergePos = POZNAN_EIVD_MERGE_POS;
     622#if HHI_MPI
     623        if(bMVIAvailable && uiEIVDMergePos>=uiMviMergePos) uiEIVDMergePos++;
     624#endif
     625        for( Int iIdx = MRG_MAX_NUM_CANDS-2; iIdx >= (Int)uiEIVDMergePos; iIdx-- )
     626        {
     627                Int iWrIdx = iIdx+1;
     628#if HHI_MPI
     629                if(bMVIAvailable)
     630                {
     631                        if(iIdx==(Int)uiMviMergePos) continue;
     632                        if(iWrIdx==(Int)uiMviMergePos) iWrIdx++;
     633                }
     634#endif
     635                if(iWrIdx>=MRG_MAX_NUM_CANDS) continue;
     636
     637                abAvailable[ iWrIdx ] = abAvailable[ iIdx ];
     638        }
     639        abAvailable[ uiEIVDMergePos ] = ( pcCU->getNeighbourCandIdx( POZNAN_EIVD_MRG_CAND, uiAbsPartIdx ) == POZNAN_EIVD_MRG_CAND + 1 );
     640       
     641        uiNumCand = 0; for( UInt uiIdx = 0; uiIdx < MRG_MAX_NUM_CANDS; uiIdx++ ) if(abAvailable[ uiIdx ]) uiNumCand++;
     642  }
     643#endif
     644
    613645  AOF( uiNumCand > 1 );
    614646
     
    665697  {
    666698    pcCU->setTextureModeDepthSubParts( uiDepth, uiAbsPartIdx, uiDepth );
     699#if POZNAN_EIVD
     700        bEIVDModifyMergeIdx = false;
     701#endif
     702  }
     703#endif
     704
     705#if POZNAN_EIVD
     706  if(bEIVDAvailable && bEIVDModifyMergeIdx)
     707  {
     708        if(ruiMergeIndex==POZNAN_EIVD_MERGE_POS) ruiMergeIndex = POZNAN_EIVD_MRG_CAND;
     709        else if(ruiMergeIndex>POZNAN_EIVD_MERGE_POS) ruiMergeIndex--;
    667710  }
    668711#endif
     
    694737Void TDecSbac::parseMergeIndex ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth )
    695738{
    696 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI
     739#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI || POZNAN_EIVD
    697740  if(
    698741#if HHI_INTER_VIEW_MOTION_PRED
     
    701744#if HHI_MPI
    702745      ( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) ||
     746#endif
     747#if     POZNAN_EIVD 
     748          ( pcCU->getSlice()->getMP()->isEIVDEnabled() ) ||
    703749#endif
    704750      0
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecSbac.h

    r5 r12  
    144144  Void parseMergeFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPUIdx );
    145145  Void parseMergeIndex    ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth );
    146 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI
     146#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI || POZNAN_EIVD
    147147  Void parseMergeIndexMV  ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth );
    148148#endif
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecSlice.cpp

    r5 r12  
    9898    g_bJustDoIt = g_bEncDecTraceEnable;
    9999#endif
     100
     101        // JK {
     102        DTRACE_CABAC_V( g_nSymbolCounter++ );
     103        DTRACE_CABAC_T( "\tCU: " );
     104        DTRACE_CABAC_V( iCUAddr );
     105        DTRACE_CABAC_T( "\n" );
     106        // JK }
     107
    100108    m_pcCuDecoder->decodeCU     ( pcCU, uiIsLast );
    101109    m_pcCuDecoder->decompressCU ( pcCU );
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecTop.cpp

    r11 r12  
    5353    m_aaiCodedScale       [ uiId ] = new Int [ MAX_NUMBER_VIEWS ];
    5454  }
    55 #if POZNAN_SYNTH
     55#if POZNAN_CU_SKIP || POZNAN_CU_SYNTH || (POZNAN_MP && !POZNAN_MP_USE_DEPTH_MAP_GENERATION)
    5656  xCreateLUTs   ( (UInt)MAX_NUMBER_VIEWS, (UInt)MAX_NUMBER_VIEWS,  m_adBaseViewShiftLUT,  m_aiBaseViewShiftLUT);
    5757
     
    7373  delete [] m_aiViewReceived;
    7474
    75 #if POZNAN_SYNTH
     75#if POZNAN_CU_SKIP || POZNAN_CU_SYNTH || (POZNAN_MP && !POZNAN_MP_USE_DEPTH_MAP_GENERATION)
    7676  xDeleteArray( m_adBaseViewShiftLUT,        MAX_NUMBER_VIEWS, MAX_NUMBER_VIEWS,  2 );
    7777  xDeleteArray( m_aiBaseViewShiftLUT,        MAX_NUMBER_VIEWS, MAX_NUMBER_VIEWS,  2 );
     
    9191}
    9292
    93 #if POZNAN_SYNTH
     93#if POZNAN_CU_SKIP || POZNAN_CU_SYNTH || (POZNAN_MP && !POZNAN_MP_USE_DEPTH_MAP_GENERATION)
    9494/*
    9595Void
     
    294294        m_aaiCodedScale [ uiViewId ][ uiBaseId ]  = pcSlice->getInvCodedScale () [ uiBaseId ];
    295295        m_aaiCodedOffset[ uiViewId ][ uiBaseId ]  = pcSlice->getInvCodedOffset() [ uiBaseId ];
    296 #if POZNAN_SYNTH
     296#if POZNAN_CU_SKIP || POZNAN_CU_SYNTH || (POZNAN_MP && !POZNAN_MP_USE_DEPTH_MAP_GENERATION)
    297297        xInitLUTs(uiBaseId,uiViewId,m_aaiCodedScale [ uiBaseId ][ uiViewId ],m_aaiCodedOffset[ uiBaseId ][ uiViewId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT);
    298298        xInitLUTs(uiViewId,uiBaseId,m_aaiCodedScale [ uiViewId ][ uiBaseId ],m_aaiCodedOffset[ uiViewId ][ uiBaseId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT);
     
    305305        m_aaiCodedScale [ uiViewId ][ uiBaseId ]  = pcSlice->getSPS()->getInvCodedScale () [ uiBaseId ];
    306306        m_aaiCodedOffset[ uiViewId ][ uiBaseId ]  = pcSlice->getSPS()->getInvCodedOffset() [ uiBaseId ];
    307 #if POZNAN_SYNTH
     307#if POZNAN_CU_SKIP || POZNAN_CU_SYNTH || (POZNAN_MP && !POZNAN_MP_USE_DEPTH_MAP_GENERATION)
    308308        xInitLUTs(uiBaseId,uiViewId,m_aaiCodedScale [ uiBaseId ][ uiViewId ],m_aaiCodedOffset[ uiBaseId ][ uiViewId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT);
    309309        xInitLUTs(uiViewId,uiBaseId,m_aaiCodedScale [ uiViewId ][ uiBaseId ],m_aaiCodedOffset[ uiViewId ][ uiBaseId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT);
     
    323323        m_aaiCodedScale [ uiViewId ][ uiBaseId ]  = pcSlice->getInvCodedScale () [ uiBaseId ];
    324324        m_aaiCodedOffset[ uiViewId ][ uiBaseId ]  = pcSlice->getInvCodedOffset() [ uiBaseId ];
    325 #if POZNAN_SYNTH
     325#if POZNAN_CU_SKIP || POZNAN_CU_SYNTH || (POZNAN_MP && !POZNAN_MP_USE_DEPTH_MAP_GENERATION)
    326326        xInitLUTs(uiBaseId,uiViewId,m_aaiCodedScale [ uiBaseId ][ uiViewId ],m_aaiCodedOffset[ uiBaseId ][ uiViewId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT);
    327327        xInitLUTs(uiViewId,uiBaseId,m_aaiCodedScale [ uiViewId ][ uiBaseId ],m_aaiCodedOffset[ uiViewId ][ uiBaseId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT);
     
    411411  m_bFirstSliceInSequence   = true;
    412412  m_pcCamParsCollector = 0;
     413#if POZNAN_MP
     414  m_pcMP = NULL;
     415#endif
    413416}
    414417
     
    441444#if HHI_INTER_VIEW_RESIDUAL_PRED
    442445  m_cResidualGenerator.destroy();
     446#endif
     447
     448#if POZNAN_MP
     449  m_pcMP = NULL;
    443450#endif
    444451}
     
    478485  m_cResidualGenerator.init( &m_cTrQuant, &m_cDepthMapGenerator );
    479486#endif
     487
     488#if POZNAN_MP
     489  m_pcMP = pcTAppDecTop->getMP();
     490#endif
    480491}
    481492
     
    604615    pcPic->removeUsedPelsMapBuffer();
    605616#endif
    606 #if POZNAN_AVAIL_MAP
     617#if POZNAN_CU_SYNTH || POZNAN_CU_SKIP
    607618    pcPic->removeAvailabilityBuffer();
    608619#endif
    609 #if POZNAN_SYNTH_VIEW
     620#if POZNAN_CU_SYNTH
    610621    pcPic->removeSynthesisBuffer();
     622#endif
     623#if POZNAN_TEXTURE_TU_DELTA_QP_ACCORDING_TO_DEPTH
     624    pcPic->removeSynthesisDepthBuffer();
    611625#endif
    612626  }
     
    696710      else
    697711      {
     712#if POZNAN_NONLINEAR_DEPTH
     713        // For texture complete depth power information. Depth power is sended, for example, for base view depth map and it should be available prior non-base texture decoding
     714        if(!cTempSPS.isDepth() && cTempSPS.getViewId())
     715        {
     716          Float fDepthPower = getDecTop()->getPicFromView( 0, pcPic->getPOC(), true )->getSPS()->getDepthPower();
     717          cTempSPS.setDepthPower(fDepthPower);
     718        }
     719#endif
    698720        cComSPS = cTempSPS;
    699721        return false;
    700722      }
     723     
    701724
    702725      // create ALF temporary buffer
     
    710733      }
    711734      m_uiValidPS |= 1;
     735
     736#if POZNAN_MP
     737#if POZNAN_MP_USE_DEPTH_MAP_GENERATION
     738      m_pcMP->init( m_cSPS.getHeight(), m_cSPS.getWidth() );
     739#else
     740      m_pcMP->init( m_cSPS.getHeight(), m_cSPS.getWidth(), m_pcCamParsCollector->getBaseViewShiftLUTI());
     741#endif
     742#endif
    712743
    713744      return false;
     
    820851      m_apcSlicePilot = pcPic->getPicSym()->getSlice(m_uiSliceIdx);
    821852      pcPic->getPicSym()->setSlice(pcSlice, m_uiSliceIdx);
     853
     854#if POZNAN_MP
     855          pcSlice->setMP(m_pcMP);
     856#endif
    822857
    823858      if (bNextSlice)
     
    875910#endif
    876911
    877 #if POZNAN_SYNTH
    878       if( m_pcCamParsCollector)
     912#if POZNAN_CU_SKIP || POZNAN_CU_SYNTH
     913      if( m_pcCamParsCollector )
    879914      {
    880915        m_pcCamParsCollector->setSlice( pcSlice );
    881916      }
    882917      //if(!getIsDepth())
    883       getDecTop()->storeSynthPicsInBuffer(pcSlice->getViewIdx(),pcSlice->getSPS()->getViewOrderIdx(),pcSlice->getPOC(),getIsDepth());
     918        getDecTop()->storeSynthPicsInBuffer(pcSlice->getViewIdx(),pcSlice->getSPS()->getViewOrderIdx(),pcSlice->getPOC(),getIsDepth());
     919#endif
     920
     921#if POZNAN_MP
     922        std::vector<TComPic*> apcSpatDataRefPics = getDecTop()->getSpatialRefPics( pcPic->getViewIdx(), pcSlice->getPOC(), m_cSPS.isDepth() );
     923        pcSlice->getMP()->setRefPicsList(&apcSpatDataRefPics); 
     924#if !POZNAN_MP_USE_DEPTH_MAP_GENERATION
     925        std::vector<TComPic*> apcSpatDepthRefPics = getDecTop()->getSpatialRefPics( pcPic->getViewIdx(), pcSlice->getPOC(), true );
     926        pcSlice->getMP()->setDepthRefPicsList(&apcSpatDepthRefPics);
     927#endif
    884928#endif
    885929
    886930      //  Decode a picture
    887931      m_cGopDecoder.decompressGop ( bEos, pcBitstream, pcPic, false );
     932
     933#if POZNAN_MP
     934          pcSlice->getMP()->disable();
     935#endif
    888936
    889937      if( m_pcCamParsCollector )
  • branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecTop.h

    r11 r12  
    5555#include "TDecCAVLC.h"
    5656
     57#if POZNAN_MP
     58#include "../TLibCommon/TComMP.h"
     59#endif
     60
    5761// ====================================================================================================================
    5862// Class definition
     
    7175  Void  uninit      ();
    7276  Void  setSlice    ( TComSlice* pcSlice );
    73 #if POZNAN_SYNTH
     77#if POZNAN_CU_SKIP || (POZNAN_MP && !POZNAN_MP_USE_DEPTH_MAP_GENERATION)
    7478  Double****          getBaseViewShiftLUTD      ()  { return m_adBaseViewShiftLUT;   }
    7579  Int****             getBaseViewShiftLUTI      ()  { return m_aiBaseViewShiftLUT;   }
     
    99103  UInt    m_uiMaxViewId;
    100104
    101 #if POZNAN_SYNTH
     105#if POZNAN_CU_SKIP || POZNAN_CU_SYNTH || (POZNAN_MP && !POZNAN_MP_USE_DEPTH_MAP_GENERATION)
    102106
    103107  UInt    m_uiBitDepthForLUT;
     
    118122};
    119123
    120 #if POZNAN_SYNTH
     124#if POZNAN_CU_SKIP || POZNAN_CU_SYNTH || (POZNAN_MP && !POZNAN_MP_USE_DEPTH_MAP_GENERATION)
    121125  template <class T>
    122126Void CamParsCollector::xDeleteArray( T*& rpt, UInt uiSize1, UInt uiSize2, UInt uiSize3 )
     
    223227#endif
    224228
     229#if POZNAN_MP
     230  TComMP*                                 m_pcMP;
     231#endif
     232
    225233  Bool                    m_bIsDepth;
    226234  Int                     m_iViewIdx;
Note: See TracChangeset for help on using the changeset viewer.