Changeset 608 in 3DVCSoftware for trunk/source/Lib/TLibEncoder/TEncGOP.h


Ignore:
Timestamp:
1 Sep 2013, 22:47:26 (11 years ago)
Author:
tech
Message:

Merged DEV-2.0-dev0@604.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibEncoder/TEncGOP.h

    r443 r608  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2013, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    4848#include "TLibCommon/TComLoopFilter.h"
    4949#include "TLibCommon/AccessUnit.h"
    50 #include "TLibCommon/TComDepthMapGenerator.h"
    51 #include "TLibCommon/TComResidualGenerator.h"
    52 #include "TEncAdaptiveLoopFilter.h"
    5350#include "TEncSampleAdaptiveOffset.h"
    5451#include "TEncSlice.h"
     
    5653#include "TEncCavlc.h"
    5754#include "TEncSbac.h"
     55#include "SEIwrite.h"
    5856
    5957#include "TEncAnalyze.h"
    60 
     58#include "TEncRateCtrl.h"
    6159#include <vector>
    6260
     
    7775  Bool                    m_bLongtermTestPictureHasBeenCoded;
    7876  Bool                    m_bLongtermTestPictureHasBeenCoded2;
     77  UInt            m_numLongTermRefPicSPS;
     78  UInt            m_ltRefPicPocLsbSps[33];
     79  Bool            m_ltRefPicUsedByCurrPicFlag[33];
    7980  Int                     m_iLastIDR;
    8081  Int                     m_iGopSize;
     
    9394  TEncBinCABAC*           m_pcBinCABAC;
    9495  TComLoopFilter*         m_pcLoopFilter;
    95  
    96 #if DEPTH_MAP_GENERATION
    97   TComDepthMapGenerator*  m_pcDepthMapGenerator;
    98 #endif
    99 #if H3D_IVRP & !QC_ARP_D0177
    100   TComResidualGenerator*  m_pcResidualGenerator;
    101 #endif
     96
     97  SEIWriter               m_seiWriter;
     98 
     99#if H_MV
     100  TComPicLists*           m_ivPicLists;
     101  std::vector<TComPic*>   m_refPicSetInterLayer;
     102
    102103  Int                     m_pocLastCoded;
    103 
    104   // Adaptive Loop filter
    105   TEncAdaptiveLoopFilter* m_pcAdaptiveLoopFilter;
     104  Int                     m_layerId; 
     105  Int                     m_viewId;
     106#if H_3D
     107  Int                     m_viewIndex;
     108  Bool                    m_isDepth;
     109#endif
     110#endif
    106111  //--Adaptive Loop filter
    107112  TEncSampleAdaptiveOffset*  m_pcSAO;
    108113  TComBitCounter*         m_pcBitCounter;
    109   TComRdCost*             m_pcRdCost;                           ///< RD cost computation
     114  TEncRateCtrl*           m_pcRateCtrl;
    110115  // indicate sequence first
    111116  Bool                    m_bSeqFirst;
     
    114119  Bool                    m_bRefreshPending;
    115120  Int                     m_pocCRA;
    116   UInt*                   m_uiStoredStartCUAddrForEncodingSlice;
    117   UInt*                   m_uiStoredStartCUAddrForEncodingEntropySlice;
     121  std::vector<Int>        m_storedStartCUAddrForEncodingSlice;
     122  std::vector<Int>        m_storedStartCUAddrForEncodingSliceSegment;
    118123
    119124  std::vector<Int> m_vRVM_RP;
    120 
     125  UInt                    m_lastBPSEI;
     126  UInt                    m_totalCoded;
     127  UInt                    m_cpbRemovalDelay;
     128  UInt                    m_tl0Idx;
     129  UInt                    m_rapIdx;
     130  Bool                    m_activeParameterSetSEIPresentInAU;
     131  Bool                    m_bufferingPeriodSEIPresentInAU;
     132  Bool                    m_pictureTimingSEIPresentInAU;
     133  Bool                    m_nestedBufferingPeriodSEIPresentInAU;
     134  Bool                    m_nestedPictureTimingSEIPresentInAU;
    121135public:
    122136  TEncGOP();
    123137  virtual ~TEncGOP();
    124138 
    125   Void  create      ( Int iWidth, Int iHeight, UInt iMaxCUWidth, UInt iMaxCUHeight );
     139  Void  create      ();
    126140  Void  destroy     ();
    127141 
    128142  Void  init        ( TEncTop* pcTEncTop );
     143#if H_MV
    129144  Void  initGOP     ( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, std::list<AccessUnit>& accessUnitsInGOP);
    130   Void  compressPicInGOP ( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRec, std::list<AccessUnit>& accessUnitsInGOP, Int iGOPid );
    131   Void  xWriteTileLocationToSliceHeader (OutputNALUnit& rNalu, TComOutputBitstream*& rpcBitstreamRedirect, TComSlice*& rpcSlice);
    132 
    133   Int   getPocLastCoded()       { return  m_pocLastCoded; }
     145  Void  compressPicInGOP ( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, std::list<AccessUnit>& accessUnitsInGOP, Int iGOPid );
     146#else
     147  Void  compressGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRec, std::list<AccessUnit>& accessUnitsInGOP );
     148#endif
     149  Void  xAttachSliceDataToNalUnit (OutputNALUnit& rNalu, TComOutputBitstream*& rpcBitstreamRedirect);
     150
     151#if H_MV
     152  Int       getPocLastCoded  ()                 { return m_pocLastCoded; } 
     153  Int       getLayerId       ()                 { return m_layerId;    } 
     154  Int       getViewId        ()                 { return m_viewId;    }
     155#if H_3D
     156  Int       getViewIndex     ()                 { return m_viewIndex;    }
     157  Bool      getIsDepth       ()                 { return m_isDepth; }
     158#endif
     159#endif
     160
    134161  Int   getGOPSize()          { return  m_iGopSize;  }
    135162 
    136163  TComList<TComPic*>*   getListPic()      { return m_pcListPic; }
    137  
     164
     165#if !H_MV
     166  Void  printOutSummary      ( UInt uiNumAllPicCoded );
     167#endif
     168#if H_3D_VSO
     169  Void  preLoopFilterPicAll  ( TComPic* pcPic, Dist64& ruiDist, UInt64& ruiBits );
     170#else
    138171  Void  preLoopFilterPicAll  ( TComPic* pcPic, UInt64& ruiDist, UInt64& ruiBits );
    139   TEncTop* getEncTop() { return m_pcEncTop; }
     172#endif
    140173 
    141174  TEncSlice*  getSliceEncoder()   { return m_pcSliceEncoder; }
    142   NalUnitType getNalUnitType( UInt uiPOCCurr );
    143   NalUnitType getNalUnitTypeBaseViewMvc( UInt uiPOCCurr );
    144   Void freeAPS     (TComAPS* pAPS, TComSPS* pSPS);
    145   Void allocAPS    (TComAPS* pAPS, TComSPS* pSPS);
     175  NalUnitType getNalUnitType( Int pocCurr, Int lastIdr );
     176  Void arrangeLongtermPicturesInRPS(TComSlice *, TComList<TComPic*>& );
    146177protected:
    147   Void encodeAPS   (TComAPS* pcAPS, TComOutputBitstream& APSbs, TComSlice* pcSlice);            //!< encode APS syntax elements
    148   Void assignNewAPS(TComAPS& cAPS, Int apsID, std::vector<TComAPS>& vAPS, TComSlice* pcSlice);  //!< Assign APS object into APS container
    149  
     178  TEncRateCtrl* getRateCtrl()       { return m_pcRateCtrl;  }
    150179
    151180protected:
    152181  Void  xInitGOP          ( Int iPOC, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut );
    153   Void  xGetBuffer        ( TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Int iNumPicRcvd, Int iTimeOffset, TComPic*& rpcPic, TComPicYuv*& rpcPicYuvRecOut, UInt uiPOCCurr );
     182  Void  xGetBuffer        ( TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Int iNumPicRcvd, Int iTimeOffset, TComPic*& rpcPic, TComPicYuv*& rpcPicYuvRecOut, Int pocCurr );
    154183 
    155184  Void  xCalculateAddPSNR ( TComPic* pcPic, TComPicYuv* pcPicD, const AccessUnit&, Double dEncTime );
    156  
     185#if H_3D_VSO
     186  Dist64 xFindDistortionFrame (TComPicYuv* pcPic0, TComPicYuv* pcPic1);
     187#else 
    157188  UInt64 xFindDistortionFrame (TComPicYuv* pcPic0, TComPicYuv* pcPic1);
     189#endif
    158190
    159191  Double xCalculateRVM();
    160192
    161   Void  xSetRefPicListModificationsMvc( TComSlice* pcSlice, UInt uiPOCCurr, UInt iGOPid );
     193  SEIActiveParameterSets* xCreateSEIActiveParameterSets (TComSPS *sps);
     194  SEIFramePacking*        xCreateSEIFramePacking();
     195  SEIDisplayOrientation*  xCreateSEIDisplayOrientation();
     196
     197  SEIToneMappingInfo*     xCreateSEIToneMappingInfo();
     198
     199  Void xCreateLeadingSEIMessages (/*SEIMessages seiMessages,*/ AccessUnit &accessUnit, TComSPS *sps);
     200  Int xGetFirstSeiLocation (AccessUnit &accessUnit);
     201  Void xResetNonNestedSEIPresentFlags()
     202  {
     203    m_activeParameterSetSEIPresentInAU = false;
     204    m_bufferingPeriodSEIPresentInAU    = false;
     205    m_pictureTimingSEIPresentInAU      = false;
     206  }
     207  Void xResetNestedSEIPresentFlags()
     208  {
     209    m_nestedBufferingPeriodSEIPresentInAU    = false;
     210    m_nestedPictureTimingSEIPresentInAU      = false;
     211  }
     212#if H_MV
     213   Void  xSetRefPicListModificationsMv( TComSlice* pcSlice, UInt iGOPid );
     214#endif
     215  Void dblMetric( TComPic* pcPic, UInt uiNumSlices );
    162216};// END CLASS DEFINITION TEncGOP
    163217
     
    168222{
    169223  EXECUTE_INLOOPFILTER,
    170   ENCODE_APS,
    171224  ENCODE_SLICE
    172225};
Note: See TracChangeset for help on using the changeset viewer.