Changeset 507 in SHVCSoftware for branches/SHM-4.1-dev/source/Lib/TLibEncoder


Ignore:
Timestamp:
25 Nov 2013, 17:32:16 (12 years ago)
Author:
nokia
Message:

Add scaled reference layer ID (JCTVC-O0098)

Location:
branches/SHM-4.1-dev/source/Lib/TLibEncoder
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-4.1-dev/source/Lib/TLibEncoder/TEncCavlc.cpp

    r506 r507  
    684684    {
    685685      Window scaledWindow = pcSPS->getScaledRefLayerWindow(i);
     686#if O0098_SCALED_REF_LAYER_ID
     687      WRITE_CODE( pcSPS->getScaledRefLayerId(i), 6,          "scaled_ref_layer_id" );
     688#endif
    686689      WRITE_SVLC( scaledWindow.getWindowLeftOffset()   >> 1, "scaled_ref_layer_left_offset" );
    687690      WRITE_SVLC( scaledWindow.getWindowTopOffset()    >> 1, "scaled_ref_layer_top_offset" );
  • branches/SHM-4.1-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r506 r507  
    783783        }
    784784
     785#if O0098_SCALED_REF_LAYER_ID
     786        const Window &scalEL = m_pcEncTop->getScaledRefLayerWindowForLayer(pcSlice->getVPS()->getRefLayerId(m_layerId, refLayerIdc));
     787#else
    785788        const Window &scalEL = m_pcEncTop->getScaledRefLayerWindow(refLayerIdc);
     789#endif
    786790
    787791        Int widthBL   = pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec()->getWidth();
     
    800804        if( pcPic->isSpatialEnhLayer(refLayerIdc))
    801805        {
     806#if O0098_SCALED_REF_LAYER_ID
     807          Window scalEL = pcSlice->getSPS()->getScaledRefLayerWindowForLayer(pcSlice->getVPS()->getRefLayerId(m_layerId, refLayerIdc));
     808#else
     809          Window scalEL = pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc);
     810#endif
    802811#if O0215_PHASE_ALIGNMENT
    803812#if O0194_JOINT_US_BITSHIFT
    804           m_pcPredSearch->upsampleBasePic( pcSlice, refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc), pcSlice->getVPS()->getPhaseAlignFlag() );
    805 #else
    806           m_pcPredSearch->upsampleBasePic( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc), pcSlice->getVPS()->getPhaseAlignFlag() );
     813          m_pcPredSearch->upsampleBasePic( pcSlice, refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), scalEL, pcSlice->getVPS()->getPhaseAlignFlag() );
     814#else
     815          m_pcPredSearch->upsampleBasePic( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), scalEL, pcSlice->getVPS()->getPhaseAlignFlag() );
    807816#endif
    808817#else
    809818#if O0194_JOINT_US_BITSHIFT
    810           m_pcPredSearch->upsampleBasePic( pcSlice, refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc) );
    811 #else
    812           m_pcPredSearch->upsampleBasePic( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc) );
     819          m_pcPredSearch->upsampleBasePic( pcSlice, refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), scalEL );
     820#else
     821          m_pcPredSearch->upsampleBasePic( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc), pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec(), pcPic->getPicYuvRec(), scalEL );
    813822#endif
    814823#endif
  • branches/SHM-4.1-dev/source/Lib/TLibEncoder/TEncTop.cpp

    r506 r507  
    791791        for(UInt i = 0; i < m_cVPS.getNumDirectRefLayers( m_layerId ); i++ )
    792792        {
     793#if O0098_SCALED_REF_LAYER_ID
     794          const Window scalEL = getSPS()->getScaledRefLayerWindowForLayer(m_cVPS.getRefLayerId(m_layerId, i));
     795#else
    793796          const Window scalEL = getSPS()->getScaledRefLayerWindow(i);
     797#endif
    794798          Bool zeroOffsets = ( scalEL.getWindowLeftOffset() == 0 && scalEL.getWindowRightOffset() == 0 && scalEL.getWindowTopOffset() == 0 && scalEL.getWindowBottomOffset() == 0 );
    795799
     
    842846        for(UInt i = 0; i < m_cVPS.getNumDirectRefLayers( m_layerId ); i++ )
    843847        {
     848#if O0098_SCALED_REF_LAYER_ID
     849          const Window scalEL = getSPS()->getScaledRefLayerWindowForLayer(m_cVPS.getRefLayerId(m_layerId, i));
     850#else
    844851          const Window scalEL = getSPS()->getScaledRefLayerWindow(i);
     852#endif
    845853          Bool zeroOffsets = ( scalEL.getWindowLeftOffset() == 0 && scalEL.getWindowRightOffset() == 0 && scalEL.getWindowTopOffset() == 0 && scalEL.getWindowBottomOffset() == 0 );
    846854
     
    912920  for(Int i = 0; i < m_cSPS.getNumScaledRefLayerOffsets(); i++)
    913921  {
     922#if O0098_SCALED_REF_LAYER_ID
     923    m_cSPS.setScaledRefLayerId(i, m_scaledRefLayerId[i]);
     924#endif
    914925    m_cSPS.getScaledRefLayerWindow(i) = m_scaledRefLayerWindow[i];
    915926  }
     
    16831694}
    16841695#endif
     1696
     1697#if O0098_SCALED_REF_LAYER_ID
     1698Window& TEncTop::getScaledRefLayerWindowForLayer(Int layerId)
     1699{
     1700  static Window win;
     1701
     1702  for (Int i = 0; i < m_numScaledRefLayerOffsets; i++)
     1703  {
     1704    if (layerId == m_scaledRefLayerId[i])
     1705    {
     1706      return m_scaledRefLayerWindow[i];
     1707    }
     1708  }
     1709
     1710  win.resetWindow();  // scaled reference layer offsets are inferred to be zero when not present
     1711  return win;
     1712}
     1713#endif
     1714
    16851715#endif //SVC_EXTENSION
    16861716//! \}
  • branches/SHM-4.1-dev/source/Lib/TLibEncoder/TEncTop.h

    r494 r507  
    141141#endif
    142142  UInt                    m_numScaledRefLayerOffsets;
     143#if O0098_SCALED_REF_LAYER_ID
     144  UInt                    m_scaledRefLayerId[MAX_LAYERS];
     145#endif
    143146  Window                  m_scaledRefLayerWindow[MAX_LAYERS];
    144147#if POC_RESET_FLAG
     
    209212  Void                    setNumScaledRefLayerOffsets(Int x) { m_numScaledRefLayerOffsets = x; }
    210213  UInt                    getNumScaledRefLayerOffsets() { return m_numScaledRefLayerOffsets; }
     214#if O0098_SCALED_REF_LAYER_ID
     215  Void                    setScaledRefLayerId(Int x, UInt id) { m_scaledRefLayerId[x] = id;   }
     216  UInt                    getScaledRefLayerId(Int x)          { return m_scaledRefLayerId[x]; }
     217  Window&  getScaledRefLayerWindowForLayer(Int layerId);
     218#endif
    211219  Window&  getScaledRefLayerWindow(Int x)            { return m_scaledRefLayerWindow[x]; }
    212220#endif //SVC_EXTENSION
Note: See TracChangeset for help on using the changeset viewer.