Changeset 42 in 3DVCSoftware for trunk/source/App/TAppEncoder/TAppEncTop.cpp


Ignore:
Timestamp:
26 Mar 2012, 18:05:40 (12 years ago)
Author:
tech
Message:

Nokia (Flexible Coding Order)
Ericsson ( High Level Syntax )
changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/App/TAppEncoder/TAppEncTop.cpp

    r21 r42  
    145145#endif
    146146
     147#if BITSTREAM_EXTRACTION
     148    m_acTEncTopList[iViewIdx]->setLayerId                      ( ( (UInt)iViewIdx ) << 1 );
     149#endif
    147150    m_acTEncTopList[iViewIdx]->setViewId                       ( (UInt)iViewIdx );
    148151    m_acTEncTopList[iViewIdx]->setViewOrderIdx                 ( m_cCameraData.getViewOrderIndex()[ iViewIdx ] );
     
    235238    for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++)
    236239    {
     240#if FLEX_CODING_ORDER
     241      // Detect whether depth comes before than texture for this view
     242      Bool isDepthFirst = false;
     243      if ( m_b3DVFlexOrder )
     244      {
     245        for ( Int ii=1; ii<12; ii+=2 )
     246        {
     247          Int iViewIdxCfg = (Int)(m_pchMVCJointCodingOrder[ii]-'0');
     248          if ( iViewIdxCfg == iViewIdx )
     249          {
     250            if ( m_pchMVCJointCodingOrder[ii-1]=='D' ) // depth comes first for this view
     251            {
     252              isDepthFirst = true;
     253            }
     254            else
     255            {
     256              assert(m_pchMVCJointCodingOrder[ii-1]=='T');
     257            }
     258            break;
     259          }
     260        }
     261      }
     262#endif
    237263      m_iDepthFrameRcvdVector.push_back(0) ;
    238264      m_acTEncDepthTopList.push_back(new TEncTop);
     
    314340#endif
    315341
     342#if BITSTREAM_EXTRACTION
     343      m_acTEncDepthTopList[iViewIdx]->setLayerId                      ( ( ( (UInt)iViewIdx ) << 1 ) + 1 );
     344#endif
    316345      m_acTEncDepthTopList[iViewIdx]->setViewId                       ( (UInt)iViewIdx );
    317346      m_acTEncDepthTopList[iViewIdx]->setViewOrderIdx                 ( m_cCameraData.getViewOrderIndex()[ iViewIdx ] );
     
    354383      m_acTEncDepthTopList[iViewIdx]->setUseDMM( m_bUseDMM );
    355384#endif
     385#if FLEX_CODING_ORDER && HHI_DMM_PRED_TEX
     386      m_acTEncDepthTopList[iViewIdx]->setUseDMM34( (m_b3DVFlexOrder && isDepthFirst) ? false : m_bUseDMM );
     387#endif
    356388#if CONSTRAINED_INTRA_PRED
    357389      m_acTEncDepthTopList[iViewIdx]->setUseConstrainedIntraPred      ( m_bUseConstrainedIntraPred );
     
    380412#endif
    381413#if HHI_MPI
     414#if FLEX_CODING_ORDER
     415      m_acTEncDepthTopList[iViewIdx]->setUseMVI( (m_b3DVFlexOrder && isDepthFirst) ? false : m_bUseMVI );
     416#else
    382417      m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI );
    383418#endif
    384 
     419#endif
     420     
    385421      m_acTEncDepthTopList[iViewIdx]->setPictureDigestEnabled(m_pictureDigestEnabled);
    386422
     
    591627  std::vector<Bool>  bDepthEos ;
    592628  std::vector<Bool>  bContinueReadingDepthPics ;
    593 
    594629  for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ )
    595630  {
     
    689724#endif
    690725
     726#if FLEX_CODING_ORDER
     727    if (m_b3DVFlexOrder)
     728    {
     729      Int i=0;
     730      Int iViewIdx = 0;
     731      bool bThisViewContinueReadingPics = false;
     732      bool bThisViewContinueReadingDepthPics = false;
     733      Int iNumberofDepthViews = m_bUsingDepthMaps?m_iNumberOfViews:0;
     734      for(Int j=0; j < (m_iNumberOfViews+ iNumberofDepthViews); j++ )     // Start encoding
     735      {
     736        if (m_pchMVCJointCodingOrder[i]=='T')
     737        {
     738          i++;
     739          assert(isdigit(m_pchMVCJointCodingOrder[i]));
     740          iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0');
     741          bThisViewContinueReadingPics = bContinueReadingPics[iViewIdx];
     742          m_acTEncTopList[iViewIdx]->encode( bEos[iViewIdx], m_cListPicYuvRecMap[iViewIdx], pcBitstream, bThisViewContinueReadingPics );
     743          bContinueReadingPics[iViewIdx]=bThisViewContinueReadingPics;
     744          bAllContinueReadingPics = bAllContinueReadingPics||bContinueReadingPics[iViewIdx];
     745
     746          if(pcBitstream->getNumberOfWrittenBits()!=0)
     747          {
     748            m_cTVideoIOBitsFile.writeBits( pcBitstream );
     749          }
     750          pcBitstream->resetBits(); //GT: also done later in ....
     751          pcBitstream->rewindStreamPacket( );
     752          // write bistream to file if necessary
     753          xWriteOutput( iViewIdx ); //GT: Write Reconfiles (when gop is complete?)
     754          i++;
     755        }
     756        else if ( m_pchMVCJointCodingOrder[i] == 'D')
     757        {
     758          i++;
     759          if( m_bUsingDepthMaps )
     760          {
     761            assert(isdigit(m_pchMVCJointCodingOrder[i]));
     762            iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0');
     763            bThisViewContinueReadingDepthPics = bContinueReadingDepthPics[iViewIdx];
     764            m_acTEncDepthTopList[iViewIdx]->encode( bDepthEos[iViewIdx], m_cListPicYuvDepthRecMap[iViewIdx], pcBitstream, bThisViewContinueReadingDepthPics );
     765            bContinueReadingDepthPics[iViewIdx]=bThisViewContinueReadingDepthPics;
     766
     767            bAllContinueReadingDepthPics = bAllContinueReadingDepthPics||bContinueReadingDepthPics[iViewIdx];
     768            if(pcBitstream->getNumberOfWrittenBits()!=0)
     769            {
     770              m_cTVideoIOBitsFile.writeBits( pcBitstream );
     771            }
     772            pcBitstream->resetBits();
     773            pcBitstream->rewindStreamPacket( );
     774            // write bistream to file if necessary
     775            xWriteOutput( iViewIdx, true );
     776            i++;
     777          }
     778        }
     779      }
     780    }
     781    else
     782    {
     783#endif
    691784    //GT: Encode
    692785    for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ )     // Start encoding
     
    723816      }
    724817    }
    725 
     818#if FLEX_CODING_ORDER
     819        }
     820#endif
    726821    // delete extra picture buffers
    727822    if( bCurrPocCoded )
Note: See TracChangeset for help on using the changeset viewer.