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


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

3DV-HTM v4.0: FCO

Location:
branches/HTM-4.0-Nokia/source/App/TAppEncoder
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • 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++ )
Note: See TracChangeset for help on using the changeset viewer.