Changeset 288 in SHVCSoftware for branches/SHM-2.1-dev/source/Lib


Ignore:
Timestamp:
12 Jun 2013, 03:37:28 (12 years ago)
Author:
qualcomm
Message:

Changes made to signaling of scaled reference layer offsets.

Patch incorporating changes made to signaling of scaled reference layer offsets during SHVC editing. The number of sets of scaled reference layer offsets is signaled. Changes to configuration files also included.

From: Adarsh K. Ramasubramonian <aramasub@…>

Location:
branches/SHM-2.1-dev/source/Lib
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-2.1-dev/source/Lib/TLibCommon/TComDataCU.cpp

    r282 r288  
    42704270#if SIMPLIFIED_MV_POS_SCALING
    42714271#if SCALED_REF_LAYER_OFFSETS
    4272   Int leftStartL = this->getSlice()->getSPS()->getScaledRefLayerWindow().getWindowLeftOffset();
    4273   Int topStartL  = this->getSlice()->getSPS()->getScaledRefLayerWindow().getWindowTopOffset();
     4272  Int leftStartL = this->getSlice()->getSPS()->getScaledRefLayerWindow(refLayerIdc).getWindowLeftOffset();
     4273  Int topStartL  = this->getSlice()->getSPS()->getScaledRefLayerWindow(refLayerIdc).getWindowTopOffset();
    42744274  Int iBX = ((uiPelX - leftStartL)*g_posScalingFactor[refLayerIdc][0] + (1<<15)) >> 16;
    42754275  Int iBY = ((uiPelY - topStartL )*g_posScalingFactor[refLayerIdc][1] + (1<<15)) >> 16;
  • branches/SHM-2.1-dev/source/Lib/TLibCommon/TComSlice.cpp

    r282 r288  
    580580    {
    581581      Int numResampler = 0;
    582       const Window &scalEL = getSPS()->getScaledRefLayerWindow();
     582      const Window &scalEL = getSPS()->getScaledRefLayerWindow(m_interLayerPredLayerIdc[i]);
    583583      Int scalingOffset = ((scalEL.getWindowLeftOffset()   == 0 ) &&
    584584                           (scalEL.getWindowRightOffset()  == 0 ) &&
     
    17651765#if SVC_EXTENSION
    17661766, m_layerId(0)
     1767#endif
     1768#if SCALED_REF_LAYER_OFFSETS
     1769, m_numScaledRefLayerOffsets  (0)
    17671770#endif
    17681771{
  • branches/SHM-2.1-dev/source/Lib/TLibCommon/TComSlice.h

    r282 r288  
    10291029#endif
    10301030#if SCALED_REF_LAYER_OFFSETS
    1031   Window      m_scaledRefLayerWindow;
     1031  UInt        m_numScaledRefLayerOffsets;
     1032  Window      m_scaledRefLayerWindow[MAX_LAYERS];
    10321033#endif
    10331034public:
     
    11711172#endif
    11721173#if SCALED_REF_LAYER_OFFSETS
    1173   Window&  getScaledRefLayerWindow(     )   { return m_scaledRefLayerWindow; }
     1174  UInt     getNumScaledRefLayerOffsets()  { return m_numScaledRefLayerOffsets; }
     1175  Void     setNumScaledRefLayerOffsets(Int x)  { m_numScaledRefLayerOffsets = x; }
     1176  Window&  getScaledRefLayerWindow( Int x )   { return m_scaledRefLayerWindow[x]; }
    11741177#endif
    11751178};
  • branches/SHM-2.1-dev/source/Lib/TLibCommon/TypeDef.h

    r285 r288  
    4545#if SVC_EXTENSION
    4646#define SPS_EXTENSION                    1      ///< Define sps_extension() syntax structure
    47 #define SCALED_REF_LAYER_OFFSET_FLAG     1      ///< M0309: Signal scaled reference layer offsets in SPS
     47#define SCALED_REF_LAYER_OFFSET_FLAG     0      ///< M0309: Signal scaled reference layer offsets in SPS
    4848#define SCALED_REF_LAYER_OFFSETS         1      ///< M0309: Signal scaled reference layer offsets in SPS
    4949#define MAX_LAYERS                       2      ///< max number of layers the codec is supposed to handle
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r245 r288  
    764764#endif
    765765  {
    766     Int iCode;
    767     Window& scaledWindow = pcSPS->getScaledRefLayerWindow();
    768     READ_SVLC( iCode, "scaled_ref_layer_left_offset" );    scaledWindow.setWindowLeftOffset  (iCode << 1);
    769     READ_SVLC( iCode, "scaled_ref_layer_top_offset" );     scaledWindow.setWindowTopOffset   (iCode << 1);
    770     READ_SVLC( iCode, "scaled_ref_layer_right_offset" );   scaledWindow.setWindowRightOffset (iCode << 1);
    771     READ_SVLC( iCode, "scaled_ref_layer_bottom_offset" );  scaledWindow.setWindowBottomOffset(iCode << 1);
     766    Int iCode;
     767    READ_UVLC( uiCode,      "num_scaled_ref_layer_offsets" ); pcSPS->setNumScaledRefLayerOffsets(uiCode);
     768    for(Int i = 0; i < pcSPS->getNumScaledRefLayerOffsets(); i++)
     769    {
     770      Window& scaledWindow = pcSPS->getScaledRefLayerWindow(i);
     771      READ_SVLC( iCode, "scaled_ref_layer_left_offset" );    scaledWindow.setWindowLeftOffset  (iCode << 1);
     772      READ_SVLC( iCode, "scaled_ref_layer_top_offset" );     scaledWindow.setWindowTopOffset   (iCode << 1);
     773      READ_SVLC( iCode, "scaled_ref_layer_right_offset" );   scaledWindow.setWindowRightOffset (iCode << 1);
     774      READ_SVLC( iCode, "scaled_ref_layer_bottom_offset" );  scaledWindow.setWindowBottomOffset(iCode << 1);
     775    }
    772776  }
    773777#endif
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r282 r288  
    255255      for(UInt i = 0; i < pcSlice->getVPS()->getNumDirectRefLayers( m_layerId ); i++ )
    256256      {
    257         const Window scalEL = pcSlice->getSPS()->getScaledRefLayerWindow();
     257        const Window scalEL = pcSlice->getSPS()->getScaledRefLayerWindow(i);
    258258        Bool zeroOffsets = ( scalEL.getWindowLeftOffset() == 0 && scalEL.getWindowRightOffset() == 0 && scalEL.getWindowTopOffset() == 0 && scalEL.getWindowBottomOffset() == 0 );
    259259
     
    865865#if SIMPLIFIED_MV_POS_SCALING
    866866#if SCALED_REF_LAYER_OFFSETS
    867         const Window &scalEL = pcSlice->getSPS()->getScaledRefLayerWindow();
     867        const Window &scalEL = pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc);
    868868
    869869        Int widthBL   = pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec()->getWidth();
     
    893893        {   
    894894#if SCALED_REF_LAYER_OFFSETS
    895           m_cPrediction.upsampleBasePic( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), pcSlice->getSPS()->getScaledRefLayerWindow() );
     895          m_cPrediction.upsampleBasePic( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc) );
    896896#else
    897897          m_cPrediction.upsampleBasePic( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec() );
  • branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncCavlc.cpp

    r282 r288  
    584584#endif
    585585  {
    586     Window scaledWindow = pcSPS->getScaledRefLayerWindow();
    587     WRITE_SVLC( scaledWindow.getWindowLeftOffset()   >> 1, "scaled_ref_layer_left_offset" );
    588     WRITE_SVLC( scaledWindow.getWindowTopOffset()    >> 1, "scaled_ref_layer_top_offset" );
    589     WRITE_SVLC( scaledWindow.getWindowRightOffset()  >> 1, "scaled_ref_layer_right_offset" );
    590     WRITE_SVLC( scaledWindow.getWindowBottomOffset() >> 1, "scaled_ref_layer_bottom_offset" );
     586    WRITE_UVLC( pcSPS->getNumScaledRefLayerOffsets(),      "num_scaled_ref_layer_offsets" );
     587    for(Int i = 0; i < pcSPS->getNumScaledRefLayerOffsets(); i++)
     588    {
     589      Window scaledWindow = pcSPS->getScaledRefLayerWindow(i);
     590      WRITE_SVLC( scaledWindow.getWindowLeftOffset()   >> 1, "scaled_ref_layer_left_offset" );
     591      WRITE_SVLC( scaledWindow.getWindowTopOffset()    >> 1, "scaled_ref_layer_top_offset" );
     592      WRITE_SVLC( scaledWindow.getWindowRightOffset()  >> 1, "scaled_ref_layer_right_offset" );
     593      WRITE_SVLC( scaledWindow.getWindowBottomOffset() >> 1, "scaled_ref_layer_bottom_offset" );
     594    }
    591595  }
    592596#endif
  • branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r282 r288  
    547547#if SIMPLIFIED_MV_POS_SCALING
    548548#if SCALED_REF_LAYER_OFFSETS
    549         const Window &scalEL = m_pcEncTop->getScaledRefLayerWindow();
     549        const Window &scalEL = m_pcEncTop->getScaledRefLayerWindow(refLayerIdc);
    550550
    551551        Int widthBL   = pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec()->getWidth();
     
    575575        {
    576576#if SCALED_REF_LAYER_OFFSETS
    577           m_pcPredSearch->upsampleBasePic( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), pcSlice->getSPS()->getScaledRefLayerWindow() );
     577          m_pcPredSearch->upsampleBasePic( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc) );
    578578#else
    579579          m_pcPredSearch->upsampleBasePic( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec() );
  • branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncTop.cpp

    r282 r288  
    8989  m_bMFMEnabledFlag = false;
    9090#endif
     91#if SCALED_REF_LAYER_OFFSETS
     92  m_numScaledRefLayerOffsets = 0;
     93#endif
    9194}
    9295
     
    509512        for(UInt i = 0; i < m_cVPS.getNumDirectRefLayers( m_layerId ); i++ )
    510513        {
    511           const Window scalEL = getSPS()->getScaledRefLayerWindow();
     514          const Window scalEL = getSPS()->getScaledRefLayerWindow(i);
    512515          Bool zeroOffsets = ( scalEL.getWindowLeftOffset() == 0 && scalEL.getWindowRightOffset() == 0 && scalEL.getWindowTopOffset() == 0 && scalEL.getWindowBottomOffset() == 0 );
    513516
     
    546549        for(UInt i = 0; i < m_cVPS.getNumDirectRefLayers( m_layerId ); i++ )
    547550        {
    548           const Window scalEL = getSPS()->getScaledRefLayerWindow();
     551          const Window scalEL = getSPS()->getScaledRefLayerWindow(i);
    549552          Bool zeroOffsets = ( scalEL.getWindowLeftOffset() == 0 && scalEL.getWindowRightOffset() == 0 && scalEL.getWindowTopOffset() == 0 && scalEL.getWindowBottomOffset() == 0 );
    550553
     
    599602#endif
    600603#if SCALED_REF_LAYER_OFFSETS
    601   m_cSPS.getScaledRefLayerWindow() = m_scaledRefLayerWindow;
     604  m_cSPS.setNumScaledRefLayerOffsets(m_numScaledRefLayerOffsets);
     605  for(Int i = 0; i < m_cSPS.getNumScaledRefLayerOffsets(); i++)
     606  {
     607    m_cSPS.getScaledRefLayerWindow(i) = m_scaledRefLayerWindow[i];
     608  }
    602609#endif
    603610  ProfileTierLevel& profileTierLevel = *m_cSPS.getPTL()->getGeneralPTL();
  • branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncTop.h

    r250 r288  
    140140#endif
    141141#if SCALED_REF_LAYER_OFFSETS
    142   Window                  m_scaledRefLayerWindow;
     142  UInt                    m_numScaledRefLayerOffsets;
     143  Window                  m_scaledRefLayerWindow[MAX_LAYERS];
    143144#endif
    144145protected:
     
    207208#endif
    208209#if SCALED_REF_LAYER_OFFSETS
    209   Window&  getScaledRefLayerWindow()            { return m_scaledRefLayerWindow; }
     210  Void                    setNumScaledRefLayerOffsets(Int x) { m_numScaledRefLayerOffsets = x; }
     211  UInt                    getNumScaledRefLayerOffsets() { return m_numScaledRefLayerOffsets; }
     212  Window&  getScaledRefLayerWindow(Int x)            { return m_scaledRefLayerWindow[x]; }
    210213#endif
    211214
Note: See TracChangeset for help on using the changeset viewer.