Changeset 34 in 3DVCSoftware


Ignore:
Timestamp:
18 Mar 2012, 10:42:07 (13 years ago)
Author:
nokia
Message:

FlexCO upload

Location:
branches/0.3-nokia
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • branches/0.3-nokia/CommonTestConditionsCfgs/baseCfg_2view+depth.cfg

    r18 r34  
    1515
    1616BitstreamFile             : stream.bit                             # bitstream file
     17
     183DVFlexOrder            :       0
     193DVCodingOrder          :       T0D0D1D2T1T2
    1720
    1821
  • branches/0.3-nokia/CommonTestConditionsCfgs/baseCfg_3view+depth.cfg

    r18 r34  
    1 
    21
    32#========== file i/o ==========
     
    2019BitstreamFile             : stream.bit                             # bitstream file
    2120
     213DVFlexOrder            :       0
     223DVCodingOrder          :       T0D0D1D2T1T2
    2223
    2324#========== general coding parameters ==========
  • branches/0.3-nokia/source/App/TAppDecoder/TAppDecTop.cpp

    r21 r34  
    126126  NalUnitType eNalUnitType;
    127127
     128#if FLEX_CODING_ORDER
     129  Int iDepthViewIdx = 0;
     130  Bool bCountDepthViewIdx = false;              // a flag which avoid repeating assign a value to iDepthViewIdx   
     131  Bool bNewPictureType =true;
     132  Bool bFirstDepth = false;
     133#endif
    128134 
    129135  while ( !bEos )
     
    136142      if( bIsDepth )
    137143      {
     144#if FLEX_CODING_ORDER
     145                  if (!bFirstSliceDecoded) m_acTDecDepthTopList[iDepthViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iDepthViewIdx] ,bNewPictureType);
     146                  m_acTDecDepthTopList[iDepthViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iDepthViewIdx]);
     147
     148#else
    138149        if (!bFirstSliceDecoded) m_acTDecDepthTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iViewIdx] );
    139150        m_acTDecDepthTopList[iViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iViewIdx]);
     151#endif
    140152      }
    141153      else
    142154      {
     155#if FLEX_CODING_ORDER
     156                  if (!bFirstSliceDecoded) m_acTDecTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx], bNewPictureType);
     157#else
    143158        if (!bFirstSliceDecoded) m_acTDecTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx] );
    144         m_acTDecTopList[iViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx]);
     159#endif
     160                m_acTDecTopList[iViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx]);
    145161      }
    146162      if( pcListPic )
     
    156172    Bool bNewPicture;
    157173    if( bIsDepth )
     174#if FLEX_CODING_ORDER
     175                  bNewPicture = m_acTDecDepthTopList[iDepthViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iDepthViewIdx], bNewPictureType);
     176#else
    158177      bNewPicture = m_acTDecDepthTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iViewIdx] );
     178#endif
    159179    else
     180#if FLEX_CODING_ORDER
     181                bNewPicture = m_acTDecTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx], bNewPictureType );
     182#else
    160183      bNewPicture = m_acTDecTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx] );
     184#endif
    161185    bFirstSliceDecoded   = true;
     186
     187#if FLEX_CODING_ORDER
     188          if (eNalUnitType == NAL_UNIT_SPS)
     189          {
     190                  if( cComSPS.isDepth() && (m_bUsingDepth==false) )  // expected not using depth, but bitstream are using depth
     191                  {                                                     // know from sps
     192                          assert( cComSPS.getViewId() == 0 && iDepthViewIdx == 0 && !bIsDepth );
     193                          startUsingDepth() ;
     194                  }
     195                  if (cComSPS.isDepth())
     196                  {
     197                          if (cComSPS.getViewId() >= m_acTVideoIOYuvDepthReconFileList.size())
     198                          {
     199                                  assert( cComSPS.getViewId() == m_acTVideoIOYuvReconFileList.size() );
     200                                  increaseNumberOfViews(cComSPS.getViewId()+1);
     201                          }
     202                       
     203                          m_acTDecDepthTopList[cComSPS.getViewId()]->setSPS(cComSPS);
     204                  }
     205                  else
     206                  {
     207                          if (cComSPS.getViewId() >= m_acTVideoIOYuvReconFileList.size())
     208                          {
     209                                  assert( cComSPS.getViewId() == m_acTVideoIOYuvReconFileList.size() );
     210                                  increaseNumberOfViews(cComSPS.getViewId()+1);
     211                          }
     212                          m_acTDecTopList[cComSPS.getViewId()]->setSPS(cComSPS);
     213                  }
     214                  bEos = m_cTVideoIOBitstreamFile.readBits( pcBitstream );
     215                  assert( !bEos);
     216                  if( cComSPS.isDepth() )
     217                          m_acTDecDepthTopList[cComSPS.getViewId()]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiDepthPOCLastDisplayList[cComSPS.getViewId()], bNewPictureType); // decode PPS
     218                  else
     219                          m_acTDecTopList[cComSPS.getViewId()]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiPOCLastDisplayList[cComSPS.getViewId()], bNewPictureType); // decode PPS
     220                  assert( eNalUnitType == NAL_UNIT_PPS );
     221          }
     222#else
    162223
    163224    if( eNalUnitType == NAL_UNIT_SPS )
     
    188249      assert( eNalUnitType == NAL_UNIT_PPS );
    189250    }
     251
     252#endif
    190253    assert( eNalUnitType != NAL_UNIT_SEI ); // not yet supported for MVC
    191254    if (bNewPicture)
    192255    {
    193256      if( bIsDepth )
     257#if FLEX_CODING_ORDER
     258        m_acTDecDepthTopList[iDepthViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iDepthViewIdx]);
     259#else
    194260        m_acTDecDepthTopList[iViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iViewIdx]);
     261#endif
    195262      else
    196263        m_acTDecTopList[iViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx]);
     
    199266      bFirstSliceDecoded = false;
    200267
    201       if( m_bUsingDepth && !bIsDepth )
    202       {
    203         bIsDepth = true;
     268#if FLEX_CODING_ORDER
     269      if (m_bUsingDepth)
     270      {
     271        bIsDepth = bNewPictureType;       
     272
     273      }
     274      if (bCountDepthViewIdx == false )
     275      {
     276        bCountDepthViewIdx = true;
     277        if (bIsDepth == true)
     278        {
     279          bFirstDepth = true;
     280          bCountDepthViewIdx = true;
     281        }
     282        if (!bFirstDepth && !bIsDepth)
     283        {
     284          iViewIdx++;
     285          bCountDepthViewIdx = false;
     286        }
     287
    204288      }
    205289      else
    206290      {
    207         bIsDepth = false;
    208         if( iViewIdx<m_acTDecTopList.size()-1)
    209         {
    210           iViewIdx++ ;
     291        if (bIsDepth)
     292        {
     293          iDepthViewIdx++;
    211294        }
    212295        else
    213296        {
     297          iViewIdx ++;
     298        }
     299
     300        if (iViewIdx >= m_acTDecTopList.size() || iDepthViewIdx >= m_acTDecDepthTopList.size())
     301        {
     302          bFirstDepth = false;
    214303          iViewIdx = 0;
    215 
     304          iDepthViewIdx = 0;
     305          bCountDepthViewIdx = false;
    216306          // end of access unit: delete extra pic buffers
    217307          Int iNumViews = (Int)m_acTVideoIOYuvReconFileList.size();
     
    244334        }
    245335      }
     336         
     337#else
     338
     339      if( m_bUsingDepth && !bIsDepth )
     340      {
     341        bIsDepth = true;
     342      }
     343      else
     344      {
     345        bIsDepth = false;
     346        if( iViewIdx<m_acTDecTopList.size()-1)
     347        {
     348          iViewIdx++ ;
     349        }
     350        else
     351        {
     352          iViewIdx = 0;
     353
     354          // end of access unit: delete extra pic buffers
     355          Int iNumViews = (Int)m_acTVideoIOYuvReconFileList.size();
     356          for( Int iVId = 0; iVId < iNumViews; iVId++ )
     357          {
     358            if( iVId < (Int)m_acTDecTopList.size() &&  m_acTDecTopList[iVId] )
     359            {
     360              m_acTDecTopList[iVId]->deleteExtraPicBuffers( (Int)uiPOC );
     361            }
     362            if( iVId < (Int)m_acTDecDepthTopList.size() && m_acTDecDepthTopList[iVId] )
     363            {
     364              m_acTDecDepthTopList[iVId]->deleteExtraPicBuffers( (Int)uiPOC );
     365            }
     366          }
     367
     368#if AMVP_BUFFERCOMPRESS
     369          // compress motion for entire access unit
     370          for( Int iVId = 0; iVId < iNumViews; iVId++ )
     371          {
     372            if( iVId < (Int)m_acTDecTopList.size() &&  m_acTDecTopList[iVId] )
     373            {
     374              m_acTDecTopList[iVId]->compressMotion( (Int)uiPOC );
     375            }
     376            if( iVId < (Int)m_acTDecDepthTopList.size() && m_acTDecDepthTopList[iVId] )
     377            {
     378              m_acTDecDepthTopList[iVId]->compressMotion( (Int)uiPOC );
     379            }
     380          }
     381#endif
     382        }
     383          }
     384#endif
    246385    }
    247386#else
     
    506645      m_acTDecDepthTopList.back()->create() ;
    507646      m_acTDecDepthTopList.back()->init( this, false );
    508       m_acTDecDepthTopList.back()->setViewIdx((Int)m_acTDecTopList.size()-1);
     647#if FLEX_CODING_ORDER
     648      Int iNumofgen = (Int)m_acTDecDepthTopList.size();
     649      m_acTDecDepthTopList.back()->setViewIdx(iNumofgen-1);
     650#else
     651          m_acTDecDepthTopList.back()->setViewIdx((Int)m_acTDecTopList.size()-1);
     652#endif
     653
    509654      m_acTDecDepthTopList.back()->setPictureDigestEnabled(m_pictureDigestEnabled);
    510655      m_acTDecDepthTopList.back()->setToDepth( true );
  • branches/0.3-nokia/source/App/TAppEncoder/TAppEncCfg.cpp

    r21 r34  
    110110    free (m_pchBitstreamFile) ;
    111111
     112#if FLEX_CODING_ORDER
     113  if (m_pchMVCJointCodingOrder != NULL)
     114  {
     115          free(m_pchMVCJointCodingOrder) ;
     116  }
     117#endif
    112118  for(Int i = 0; i< m_pchDepthReconFileList.size(); i++ )
    113119  {
     
    153159  string cfg_ReconFile;
    154160  string cfg_dQPFile;
     161
     162#if FLEX_CODING_ORDER
     163  string cfg_JointCodingOrdering;
     164#endif
     165
    155166  po::Options opts;
    156167  opts.addOptions()
     
    191202  ("NumberOfViews",         m_iNumberOfViews,    0, "Number of views")
    192203
    193 
     204#if FLEX_CODING_ORDER
     205  ("3DVFlexOrder",          m_b3DVFlexOrder,   false, "flexible coding order flag" )
     206  ("3DVCodingOrder",            cfg_JointCodingOrdering,  string(""), "The coding order for joint texture-depth coding")
     207
     208#endif
    194209  /* Unit definition parameters */
    195210  ("MaxCUWidth",          m_uiMaxCUWidth,  64u)
     
    379394  m_pchdQPFile = cfg_dQPFile.empty() ? NULL : strdup(cfg_dQPFile.c_str());
    380395
     396#if FLEX_CODING_ORDER && HHI_VSO
     397  m_pchMVCJointCodingOrder      = cfg_JointCodingOrdering.empty()?NULL:strdup(cfg_JointCodingOrdering.c_str());
     398  // If flexible order is enabled and if depth comes before the texture for a view, disable VSO
     399  Bool depthComesFirst = false;
     400  if ( m_b3DVFlexOrder )
     401  {
     402    for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++)
     403    {
     404      for ( Int ii=1; ii<12; ii+=2 )
     405      {
     406        Int iViewIdxCfg = (Int)(m_pchMVCJointCodingOrder[ii]-'0');
     407        if ( iViewIdxCfg == iViewIdx )
     408        {
     409          if ( m_pchMVCJointCodingOrder[ii-1]=='D' ) // depth comes first for this view
     410          {
     411            depthComesFirst = true;
     412            break;
     413          }
     414          else
     415          {
     416            assert(m_pchMVCJointCodingOrder[ii-1]=='T');
     417          }
     418        }
     419      }
     420    }
     421  }
     422  if (depthComesFirst)
     423  {
     424    m_bUseVSO = false;         
     425  }
     426#endif
     427
    381428
    382429// GT FIX
  • branches/0.3-nokia/source/App/TAppEncoder/TAppEncCfg.h

    r5 r34  
    8181  Bool      m_bUsingDepthMaps ;
    8282
     83#if FLEX_CODING_ORDER
     84  char*         m_pchMVCJointCodingOrder;               ///<  texture-depth coding order
     85  Bool          m_b3DVFlexOrder;                ///<  flexible coding order flag
     86#endif
     87
    8388
    8489  // coding structure
  • branches/0.3-nokia/source/App/TAppEncoder/TAppEncTop.cpp

    r21 r34  
    235235    for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++)
    236236    {
     237#if FLEX_CODING_ORDER
     238      // Detect whether depth comes before than texture for this view
     239      Bool isDepthFirst = false;
     240      if ( m_b3DVFlexOrder )
     241      {
     242        for ( Int ii=1; ii<12; ii+=2 )
     243        {
     244          Int iViewIdxCfg = (Int)(m_pchMVCJointCodingOrder[ii]-'0');
     245          if ( iViewIdxCfg == iViewIdx )
     246          {
     247            if ( m_pchMVCJointCodingOrder[ii-1]=='D' ) // depth comes first for this view
     248            {
     249              isDepthFirst = true;
     250            }
     251            else
     252            {
     253              assert(m_pchMVCJointCodingOrder[ii-1]=='T');
     254            }
     255            break;
     256          }
     257        }
     258      }
     259#endif
    237260      m_iDepthFrameRcvdVector.push_back(0) ;
    238261      m_acTEncDepthTopList.push_back(new TEncTop);
     
    354377      m_acTEncDepthTopList[iViewIdx]->setUseDMM( m_bUseDMM );
    355378#endif
     379#if FLEX_CODING_ORDER && HHI_DMM_PRED_TEX
     380      m_acTEncDepthTopList[iViewIdx]->setUseDMM34( (m_b3DVFlexOrder && isDepthFirst) ? false : m_bUseDMM );
     381#endif
    356382#if CONSTRAINED_INTRA_PRED
    357383      m_acTEncDepthTopList[iViewIdx]->setUseConstrainedIntraPred      ( m_bUseConstrainedIntraPred );
     
    380406#endif
    381407#if HHI_MPI
     408#if FLEX_CODING_ORDER
     409      m_acTEncDepthTopList[iViewIdx]->setUseMVI( (m_b3DVFlexOrder && isDepthFirst) ? false : m_bUseMVI );
     410#else
    382411      m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI );
    383412#endif
    384 
     413#endif
     414     
    385415      m_acTEncDepthTopList[iViewIdx]->setPictureDigestEnabled(m_pictureDigestEnabled);
    386416
     
    591621  std::vector<Bool>  bDepthEos ;
    592622  std::vector<Bool>  bContinueReadingDepthPics ;
    593 
    594623  for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ )
    595624  {
     
    689718#endif
    690719
     720#if FLEX_CODING_ORDER
     721    if (m_b3DVFlexOrder)
     722    {
     723      Int i=0;
     724      Int iViewIdx = 0;
     725      bool bThisViewContinueReadingPics = false;
     726      bool bThisViewContinueReadingDepthPics = false;
     727      Int iNumberofDepthViews = m_bUsingDepthMaps?m_iNumberOfViews:0;
     728      for(Int j=0; j < (m_iNumberOfViews+ iNumberofDepthViews); j++ )     // Start encoding
     729      {
     730        if (m_pchMVCJointCodingOrder[i]=='T')
     731        {
     732          i++;
     733          assert(isdigit(m_pchMVCJointCodingOrder[i]));
     734          iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0');
     735          bThisViewContinueReadingPics = bContinueReadingPics[iViewIdx];
     736          m_acTEncTopList[iViewIdx]->encode( bEos[iViewIdx], m_cListPicYuvRecMap[iViewIdx], pcBitstream, bThisViewContinueReadingPics );
     737          bContinueReadingPics[iViewIdx]=bThisViewContinueReadingPics;
     738          bAllContinueReadingPics = bAllContinueReadingPics||bContinueReadingPics[iViewIdx];
     739
     740          if(pcBitstream->getNumberOfWrittenBits()!=0)
     741          {
     742            m_cTVideoIOBitsFile.writeBits( pcBitstream );
     743          }
     744          pcBitstream->resetBits(); //GT: also done later in ....
     745          pcBitstream->rewindStreamPacket( );
     746          // write bistream to file if necessary
     747          xWriteOutput( iViewIdx ); //GT: Write Reconfiles (when gop is complete?)
     748          i++;
     749        }
     750        else if ( m_pchMVCJointCodingOrder[i] == 'D')
     751        {
     752          i++;
     753          if( m_bUsingDepthMaps )
     754          {
     755            assert(isdigit(m_pchMVCJointCodingOrder[i]));
     756            iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0');
     757            bThisViewContinueReadingDepthPics = bContinueReadingDepthPics[iViewIdx];
     758            m_acTEncDepthTopList[iViewIdx]->encode( bDepthEos[iViewIdx], m_cListPicYuvDepthRecMap[iViewIdx], pcBitstream, bThisViewContinueReadingDepthPics );
     759            bContinueReadingDepthPics[iViewIdx]=bThisViewContinueReadingDepthPics;
     760
     761            bAllContinueReadingDepthPics = bAllContinueReadingDepthPics||bContinueReadingDepthPics[iViewIdx];
     762            if(pcBitstream->getNumberOfWrittenBits()!=0)
     763            {
     764              m_cTVideoIOBitsFile.writeBits( pcBitstream );
     765            }
     766            pcBitstream->resetBits();
     767            pcBitstream->rewindStreamPacket( );
     768            // write bistream to file if necessary
     769            xWriteOutput( iViewIdx, true );
     770            i++;
     771          }
     772        }
     773      }
     774    }
     775    else
     776    {
     777#endif
    691778    //GT: Encode
    692779    for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ )     // Start encoding
     
    723810      }
    724811    }
    725 
     812#if FLEX_CODING_ORDER
     813        }
     814#endif
    726815    // delete extra picture buffers
    727816    if( bCurrPocCoded )
  • branches/0.3-nokia/source/Lib/TLibCommon/TComSlice.cpp

    r21 r34  
    687687  m_bUseDMM = false;
    688688#endif
     689#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     690   m_bUseDMM34 = false;
     691#endif
    689692}
    690693
  • branches/0.3-nokia/source/Lib/TLibCommon/TComSlice.h

    r21 r34  
    134134  Bool  m_bUseDMM;
    135135#endif
     136#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     137  Bool  m_bUseDMM34;
     138#endif
    136139
    137140#if DEPTH_MAP_GENERATION
     
    230233  Void setUseDMM( Bool b ) { m_bUseDMM = b;    }
    231234#endif
    232 
     235#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     236  Bool getUseDMM34()         { return m_bUseDMM34; }
     237  Void setUseDMM34( Bool b ) { m_bUseDMM34 = b;    }
     238#endif
    233239
    234240#if DCM_COMB_LIST
  • branches/0.3-nokia/source/Lib/TLibCommon/TypeDef.h

    r21 r34  
    4040
    4141
     42#define FLEX_CODING_ORDER                                       1
    4243
    4344#define SONY_COLPIC_AVAILABILITY                  1
     
    329330#endif
    330331
     332
     333
    331334// ====================================================================================================================
    332335// Basic type redefinition
  • branches/0.3-nokia/source/Lib/TLibDecoder/TDecTop.cpp

    r21 r34  
    513513
    514514#if DCM_SKIP_DECODING_FRAMES
     515#if FLEX_CODING_ORDER
     516Bool TDecTop::decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS, Int& iSkipFrame,  Int& iPOCLastDisplay, Bool& bNewPictureType)
     517#else
    515518Bool TDecTop::decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS, Int& iSkipFrame,  Int& iPOCLastDisplay)
     519
     520#endif
    516521#else
    517522Void TDecTop::decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS )
     
    541546      TComSPS cTempSPS;
    542547      m_cEntropyDecoder.decodeSPS( &cTempSPS );
     548#if FLEX_CODING_ORDER
     549      m_cNewSPS = cTempSPS;
     550#endif
    543551
    544552      if( (m_iViewIdx == cTempSPS.getViewId()) && ( m_bIsDepth == cTempSPS.isDepth() ) )
     
    615623      {
    616624        m_uiPrevPOC = m_apcSlicePilot->getPOC();
     625#if FLEX_CODING_ORDER
     626        bNewPictureType = m_cNewSPS.isDepth();
     627#endif
    617628        return true;
    618629      }
     
    697708        std::vector<TComPic*> apcSpatRefPics = getDecTop()->getSpatialRefPics( pcPic->getViewIdx(), pcSlice->getPOC(), m_cSPS.isDepth() );
    698709        TComPic * const pcTexturePic = m_cSPS.isDepth() ? getDecTop()->getPicFromView( pcPic->getViewIdx(), pcSlice->getPOC(), false ) : NULL;
     710
     711#if FLEX_CODING_ORDER
     712        if (pcTexturePic != NULL)
     713        {
     714          assert( ! m_cSPS.isDepth() || pcTexturePic != NULL );
     715          pcSlice->setTexturePic( pcTexturePic );
     716        }
     717#else
    699718        assert( ! m_cSPS.isDepth() || pcTexturePic != NULL );
    700719        pcSlice->setTexturePic( pcTexturePic );
    701720        pcSlice->setViewIdx( pcPic->getViewIdx() );
     721#endif
    702722#if SONY_COLPIC_AVAILABILITY
    703723        pcSlice->setViewOrderIdx( pcPic->getViewOrderIdx() );
  • branches/0.3-nokia/source/Lib/TLibDecoder/TDecTop.h

    r21 r34  
    111111  TComList<TComPic*>      m_cListPic;         //  Dynamic buffer
    112112  TComSPS                 m_cSPS;
     113#if FLEX_CODING_ORDER
     114  TComSPS                 m_cNewSPS;
     115#endif
    113116  TComPPS                 m_cPPS;
    114117  TComSlice*              m_apcSlicePilot;
     
    167170  Void  init( TAppDecTop* pcTAppDecTop, Bool bFirstInstance = true );
    168171#if DCM_SKIP_DECODING_FRAMES
     172#if FLEX_CODING_ORDER
     173  Bool  decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS, Int& iSkipFrame, Int& iPOCLastDisplay, Bool& bNewPictureType);
     174#else
    169175  Bool  decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS, Int& iSkipFrame, Int& iPOCLastDisplay);
     176
     177#endif
    170178#else
    171179  Void  decode ( Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS );
  • branches/0.3-nokia/source/Lib/TLibEncoder/TEncCfg.h

    r21 r34  
    159159  Bool m_bUseDMM;
    160160#endif
     161#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     162  Bool m_bUseDMM34;
     163#endif
    161164#if HHI_MPI
    162165  Bool m_bUseMVI;
     
    424427  Bool getUseDMM()        { return m_bUseDMM; }
    425428#endif
    426 
     429#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     430  Void setUseDMM34( Bool b) { m_bUseDMM34 = b;    }
     431  Bool getUseDMM34()        { return m_bUseDMM34; }
     432#endif
    427433#if LM_CHROMA
    428434  Bool getUseLMChroma                       ()      { return m_bUseLMChroma;        }
  • branches/0.3-nokia/source/Lib/TLibEncoder/TEncSbac.cpp

    r5 r34  
    11261126#endif
    11271127#if HHI_DMM_PRED_TEX
     1128#if FLEX_CODING_ORDER
     1129    if ( !pcCU->getSlice()->getSPS()->getUseDMM34() )
     1130    {
     1131      assert( uiDir != DMM_WEDGE_PREDTEX_D_IDX );
     1132      assert( uiDir != DMM_CONTOUR_PREDTEX_D_IDX );
     1133    }
     1134#endif
    11281135    if( uiDir == DMM_WEDGE_PREDTEX_D_IDX )     { xCodeWedgePredTexDeltaInfo  ( pcCU, uiAbsPartIdx ); }
    11291136    if( uiDir == DMM_CONTOUR_PREDTEX_D_IDX )   { xCodeContourPredTexDeltaInfo( pcCU, uiAbsPartIdx ); }
  • branches/0.3-nokia/source/Lib/TLibEncoder/TEncSearch.cpp

    r5 r34  
    19261926#endif
    19271927#if HHI_DMM_PRED_TEX
     1928#if FLEX_CODING_ORDER
     1929      if ( pcCU->getSlice()->getSPS()->getUseDMM34() )
     1930      {
     1931#endif
    19281932      TComYuv cTempYuv; cTempYuv.create( uiWidth, uiHeight ); cTempYuv.clear();
    19291933      Pel* piTempY      = cTempYuv.getLumaAddr();
     
    19581962        uiRdModeList[ uiNewMaxMode++ ] = DMM_CONTOUR_PREDTEX_D_IDX;
    19591963      }
    1960 
    19611964      cTempYuv.destroy();
     1965#if FLEX_CODING_ORDER
     1966      }
     1967#endif
    19621968#endif
    19631969    }
     
    19881994#else
    19891995#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     1996#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     1997      if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight, pcCU->getSlice()->getSPS()->getUseDMM34() ) )
     1998#else
    19901999      if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight ) )
     2000#endif
    19912001        continue;
    19922002#endif
     
    20762086#else
    20772087#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
     2088#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     2089      if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight, pcCU->getSlice()->getSPS()->getUseDMM34() ) )
     2090#else
    20782091      if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight ) )
     2092#endif
    20792093        continue;
    20802094#endif
     
    27192733}
    27202734
     2735#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     2736Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight, Bool bDMMAvailable34 )
     2737#else
    27212738Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight )
     2739#endif
    27222740{
    27232741  if( uiMode <= MAX_MODE_ID_INTRA_DIR ) return true;
     
    27472765      bDMMAvailable = false;
    27482766    }
     2767#if FLEX_CODING_ORDER
     2768    if ( !bDMMAvailable34 )
     2769    {
     2770      bDMMAvailable = false;
     2771    }
     2772#endif
    27492773  }
    27502774
  • branches/0.3-nokia/source/Lib/TLibEncoder/TEncSearch.h

    r5 r34  
    207207  Bool predIntraLumaDMMAvailable( UInt         uiMode,
    208208                                  UInt         uiWidth,
     209#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     210                                  UInt         uiHeight,
     211                                  Bool         bDMMAvailable34 );
     212#else
    209213                                  UInt         uiHeight );
     214#endif
    210215#endif
    211216#if HHI_DMM_WEDGE_INTRA
  • branches/0.3-nokia/source/Lib/TLibEncoder/TEncTop.cpp

    r21 r34  
    287287
    288288  bool bSomethingCoded = false ;
    289 
     289#if FLEX_CODING_ORDER 
     290  if (TEncTop::m_bPicWaitingForCoding )
     291#else
    290292  if (m_bPicWaitingForCoding )
     293#endif
    291294  {
    292295    std::map<Int, TComPic*>::iterator cIter = m_acInputPicMap.find( (Int)m_cSeqIter.getPoc() );
     
    615618#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    616619  m_cSPS.setUseDMM( m_bUseDMM );
     620#endif
     621#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     622  m_cSPS.setUseDMM34( m_bUseDMM34 );
    617623#endif
    618624#if HHI_MPI
Note: See TracChangeset for help on using the changeset viewer.