Changeset 42 in 3DVCSoftware for trunk/source/Lib/TLibEncoder


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

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

Location:
trunk/source/Lib/TLibEncoder
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibEncoder/TEncCavlc.cpp

    r5 r42  
    3939
    4040#include "TEncCavlc.h"
     41#include "../TLibCommon/SEI.h"
    4142#include "SEIwrite.h"
    4243
     
    228229void TEncCavlc::codeSEI(const SEI& sei)
    229230{
     231#if BITSTREAM_EXTRACTION
     232  codeNALUnitHeader( NAL_UNIT_SEI, NAL_REF_IDC_PRIORITY_LOWEST, 0, sei.getLayerId() );
     233#else
    230234  codeNALUnitHeader(NAL_UNIT_SEI, NAL_REF_IDC_PRIORITY_LOWEST);
     235#endif
    231236  writeSEImessage(*m_pcBitIf, sei);
    232237}
     
    235240{
    236241  // uiFirstByte
     242#if BITSTREAM_EXTRACTION
     243  codeNALUnitHeader( NAL_UNIT_PPS, NAL_REF_IDC_PRIORITY_HIGHEST, 0, pcPPS->getLayerId() );
     244#else
    237245  codeNALUnitHeader( NAL_UNIT_PPS, NAL_REF_IDC_PRIORITY_HIGHEST );
     246#endif
    238247
    239248  xWriteUvlc( pcPPS->getPPSId() );
     
    249258}
    250259
     260#if BITSTREAM_EXTRACTION
     261Void TEncCavlc::codeNALUnitHeader( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId, UInt uiLayerId )
     262{
     263  // uiFirstByte
     264  xWriteCode( 0, 1);                    // forbidden_zero_flag
     265  xWriteCode( eNalRefIdc==0 ? 0:1, 1);  // nal_ref_flag
     266  xWriteCode( eNalUnitType, 6);         // nal_unit_type
     267
     268  xWriteCode( TemporalId, 3);           // temporal_id
     269  xWriteCode( uiLayerId+1, 5);          // layer_id_plus1
     270}
     271#else
    251272Void TEncCavlc::codeNALUnitHeader( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId, Bool bOutputFlag )
    252273{
     
    263284  }
    264285}
     286#endif
    265287
    266288Void TEncCavlc::codeSPS( TComSPS* pcSPS )
    267289{
    268290  // uiFirstByte
     291#if BITSTREAM_EXTRACTION
     292  codeNALUnitHeader( NAL_UNIT_SPS, NAL_REF_IDC_PRIORITY_HIGHEST, 0, pcSPS->getLayerId() );
     293#else
    269294  codeNALUnitHeader( NAL_UNIT_SPS, NAL_REF_IDC_PRIORITY_HIGHEST );
     295#endif
    270296
    271297  // Structure
     
    385411  // here someone can add an appropriated NalRefIdc type
    386412#if DCM_DECODING_REFRESH
     413#if BITSTREAM_EXTRACTION
     414  codeNALUnitHeader (pcSlice->getNalUnitType(), NAL_REF_IDC_PRIORITY_HIGHEST, 1, pcSlice->getLayerId());
     415#else
    387416  codeNALUnitHeader (pcSlice->getNalUnitType(), NAL_REF_IDC_PRIORITY_HIGHEST, 1, true);
     417#endif
     418#else
     419#if BITSTREAM_EXTRACTION
     420  codeNALUnitHeader (NAL_UNIT_CODED_SLICE, NAL_REF_IDC_PRIORITY_HIGHEST, 0, pcSlice->getLayerId());
    388421#else
    389422  codeNALUnitHeader (NAL_UNIT_CODED_SLICE, NAL_REF_IDC_PRIORITY_HIGHEST);
     423#endif
    390424#endif
    391425
  • trunk/source/Lib/TLibEncoder/TEncCavlc.h

    r5 r42  
    206206  UInt  getCoeffCost          ()                { return  m_uiCoeffCost;  }
    207207 
     208#if BITSTREAM_EXTRACTION
     209  Void  codeNALUnitHeader       ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, UInt uiLayerId = 0 );
     210#else
    208211  Void  codeNALUnitHeader       ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, Bool bOutputFlag = true );
     212#endif
    209213 
    210214  Void  codeSPS                 ( TComSPS* pcSPS );
  • trunk/source/Lib/TLibEncoder/TEncCfg.h

    r21 r42  
    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;
     
    184187  //std::vector<int>  m_aiLayerQPOffset;
    185188
     189#if BITSTREAM_EXTRACTION
     190  UInt        m_uiLayerId;
     191#endif
    186192  UInt        m_uiViewId;
    187193  Int         m_iViewOrderIdx;
     
    235241  Void      setRateGOPSize                  ( Int   i )      { m_iRateGOPSize = i; }
    236242
     243#if BITSTREAM_EXTRACTION
     244  Void      setLayerId                      ( UInt  u )      { m_uiLayerId              = u; }
     245  UInt      getLayerId                      ( )              { return m_uiLayerId; }
     246#endif
    237247  Void      setViewId                       ( UInt  u )      { m_uiViewId               = u; }
    238248  Void      setViewOrderIdx                 ( Int   i )      { m_iViewOrderIdx          = i; }
     
    424434  Bool getUseDMM()        { return m_bUseDMM; }
    425435#endif
    426 
     436#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     437  Void setUseDMM34( Bool b) { m_bUseDMM34 = b;    }
     438  Bool getUseDMM34()        { return m_bUseDMM34; }
     439#endif
    427440#if LM_CHROMA
    428441  Bool getUseLMChroma                       ()      { return m_bUseLMChroma;        }
  • trunk/source/Lib/TLibEncoder/TEncEntropy.h

    r5 r42  
    7272  virtual UInt  getCoeffCost          ()                = 0;
    7373 
     74#if BITSTREAM_EXTRACTION
     75  virtual Void  codeNALUnitHeader       ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, UInt uiLayerId = 0 ) = 0;
     76#else
    7477  virtual Void  codeNALUnitHeader       ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, Bool bOutputFlag = true ) = 0;
     78#endif
    7579
    7680  virtual Void  codeSPS                 ( TComSPS* pcSPS )                                      = 0;
  • trunk/source/Lib/TLibEncoder/TEncGOP.cpp

    r5 r42  
    639639        seiBs.create(1024);
    640640        /* write the SEI messages */
     641#if BITSTREAM_EXTRACTION
     642        sei_recon_picture_digest.setLayerId( pcSlice->getLayerId() );
     643#endif
    641644        m_pcEntropyCoder->setEntropyCoder(m_pcCavlcCoder, pcSlice);
    642645        m_pcEntropyCoder->setBitstream(&seiBs);
     
    824827  }
    825828
    826 #if HHI_VSO
     829#if HHI_VSO_PRINT_DIST
    827830  if ( m_pcRdCost->getUseRenModel() )
    828831  {
  • trunk/source/Lib/TLibEncoder/TEncSbac.cpp

    r5 r42  
    177177}
    178178
     179#if BITSTREAM_EXTRACTION
     180Void TEncSbac::codeNALUnitHeader( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId, UInt uiLayerId )
     181#else
    179182Void TEncSbac::codeNALUnitHeader( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId, Bool bOutputFlag )
     183#endif
    180184{
    181185  assert (0);
     
    11261130#endif
    11271131#if HHI_DMM_PRED_TEX
     1132#if FLEX_CODING_ORDER
     1133    if ( !pcCU->getSlice()->getSPS()->getUseDMM34() )
     1134    {
     1135      assert( uiDir != DMM_WEDGE_PREDTEX_D_IDX );
     1136      assert( uiDir != DMM_CONTOUR_PREDTEX_D_IDX );
     1137    }
     1138#endif
    11281139    if( uiDir == DMM_WEDGE_PREDTEX_D_IDX )     { xCodeWedgePredTexDeltaInfo  ( pcCU, uiAbsPartIdx ); }
    11291140    if( uiDir == DMM_CONTOUR_PREDTEX_D_IDX )   { xCodeContourPredTexDeltaInfo( pcCU, uiAbsPartIdx ); }
  • trunk/source/Lib/TLibEncoder/TEncSbac.h

    r5 r42  
    8989  //--SBAC RD
    9090 
     91#if BITSTREAM_EXTRACTION
     92  Void  codeNALUnitHeader       ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, UInt uiLayerId = 0 );
     93#else
    9194  Void  codeNALUnitHeader       ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, Bool bOutputFlag = true );
     95#endif
    9296
    9397  Void  codeSPS                 ( TComSPS* pcSPS     );
  • trunk/source/Lib/TLibEncoder/TEncSearch.cpp

    r5 r42  
    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
  • trunk/source/Lib/TLibEncoder/TEncSearch.h

    r5 r42  
    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
  • trunk/source/Lib/TLibEncoder/TEncSlice.cpp

    r21 r42  
    149149  rpcSlice->initSlice();
    150150  rpcSlice->setPOC( pcPic->getPOC() );
     151#if BITSTREAM_EXTRACTION
     152  rpcSlice->setLayerId( m_pcCfg->getLayerId() );
     153#endif
    151154#if SONY_COLPIC_AVAILABILITY
    152155  rpcSlice->setViewOrderIdx(m_pcCfg->getViewOrderIdx());
  • trunk/source/Lib/TLibEncoder/TEncTop.cpp

    r21 r42  
    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() );
     
    543546  m_cSPS.setMaxTrSize   ( 1 << m_uiQuadtreeTULog2MaxSize );
    544547
     548#if BITSTREAM_EXTRACTION
     549  m_cSPS.setLayerId( m_uiLayerId );
     550#endif
     551
    545552  if( m_bIsDepth )
    546553  {
     
    616623  m_cSPS.setUseDMM( m_bUseDMM );
    617624#endif
     625#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER
     626  m_cSPS.setUseDMM34( m_bUseDMM34 );
     627#endif
    618628#if HHI_MPI
    619629  m_cSPS.setUseMVI( m_bUseMVI );
     
    626636Void TEncTop::xInitPPS()
    627637{
     638#if BITSTREAM_EXTRACTION
     639  m_cPPS.setLayerId( m_uiLayerId );
     640#endif
     641
    628642  m_cPPS.setConstrainedIntraPred( m_bUseConstrainedIntraPred );
    629643  m_cPPS.setPPSId( ( m_uiViewId << 1 ) + ( m_bIsDepth ? 1 : 0 ) );
Note: See TracChangeset for help on using the changeset viewer.