Changeset 288 in SHVCSoftware for branches/SHM-2.1-dev/source/Lib
- Timestamp:
- 12 Jun 2013, 03:37:28 (12 years ago)
- 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 4270 4270 #if SIMPLIFIED_MV_POS_SCALING 4271 4271 #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(); 4274 4274 Int iBX = ((uiPelX - leftStartL)*g_posScalingFactor[refLayerIdc][0] + (1<<15)) >> 16; 4275 4275 Int iBY = ((uiPelY - topStartL )*g_posScalingFactor[refLayerIdc][1] + (1<<15)) >> 16; -
branches/SHM-2.1-dev/source/Lib/TLibCommon/TComSlice.cpp
r282 r288 580 580 { 581 581 Int numResampler = 0; 582 const Window &scalEL = getSPS()->getScaledRefLayerWindow( );582 const Window &scalEL = getSPS()->getScaledRefLayerWindow(m_interLayerPredLayerIdc[i]); 583 583 Int scalingOffset = ((scalEL.getWindowLeftOffset() == 0 ) && 584 584 (scalEL.getWindowRightOffset() == 0 ) && … … 1765 1765 #if SVC_EXTENSION 1766 1766 , m_layerId(0) 1767 #endif 1768 #if SCALED_REF_LAYER_OFFSETS 1769 , m_numScaledRefLayerOffsets (0) 1767 1770 #endif 1768 1771 { -
branches/SHM-2.1-dev/source/Lib/TLibCommon/TComSlice.h
r282 r288 1029 1029 #endif 1030 1030 #if SCALED_REF_LAYER_OFFSETS 1031 Window m_scaledRefLayerWindow; 1031 UInt m_numScaledRefLayerOffsets; 1032 Window m_scaledRefLayerWindow[MAX_LAYERS]; 1032 1033 #endif 1033 1034 public: … … 1171 1172 #endif 1172 1173 #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]; } 1174 1177 #endif 1175 1178 }; -
branches/SHM-2.1-dev/source/Lib/TLibCommon/TypeDef.h
r285 r288 45 45 #if SVC_EXTENSION 46 46 #define SPS_EXTENSION 1 ///< Define sps_extension() syntax structure 47 #define SCALED_REF_LAYER_OFFSET_FLAG 1///< M0309: Signal scaled reference layer offsets in SPS47 #define SCALED_REF_LAYER_OFFSET_FLAG 0 ///< M0309: Signal scaled reference layer offsets in SPS 48 48 #define SCALED_REF_LAYER_OFFSETS 1 ///< M0309: Signal scaled reference layer offsets in SPS 49 49 #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 764 764 #endif 765 765 { 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 } 772 776 } 773 777 #endif -
branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecTop.cpp
r282 r288 255 255 for(UInt i = 0; i < pcSlice->getVPS()->getNumDirectRefLayers( m_layerId ); i++ ) 256 256 { 257 const Window scalEL = pcSlice->getSPS()->getScaledRefLayerWindow( );257 const Window scalEL = pcSlice->getSPS()->getScaledRefLayerWindow(i); 258 258 Bool zeroOffsets = ( scalEL.getWindowLeftOffset() == 0 && scalEL.getWindowRightOffset() == 0 && scalEL.getWindowTopOffset() == 0 && scalEL.getWindowBottomOffset() == 0 ); 259 259 … … 865 865 #if SIMPLIFIED_MV_POS_SCALING 866 866 #if SCALED_REF_LAYER_OFFSETS 867 const Window &scalEL = pcSlice->getSPS()->getScaledRefLayerWindow( );867 const Window &scalEL = pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc); 868 868 869 869 Int widthBL = pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec()->getWidth(); … … 893 893 { 894 894 #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) ); 896 896 #else 897 897 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 584 584 #endif 585 585 { 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 } 591 595 } 592 596 #endif -
branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncGOP.cpp
r282 r288 547 547 #if SIMPLIFIED_MV_POS_SCALING 548 548 #if SCALED_REF_LAYER_OFFSETS 549 const Window &scalEL = m_pcEncTop->getScaledRefLayerWindow( );549 const Window &scalEL = m_pcEncTop->getScaledRefLayerWindow(refLayerIdc); 550 550 551 551 Int widthBL = pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec()->getWidth(); … … 575 575 { 576 576 #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) ); 578 578 #else 579 579 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 89 89 m_bMFMEnabledFlag = false; 90 90 #endif 91 #if SCALED_REF_LAYER_OFFSETS 92 m_numScaledRefLayerOffsets = 0; 93 #endif 91 94 } 92 95 … … 509 512 for(UInt i = 0; i < m_cVPS.getNumDirectRefLayers( m_layerId ); i++ ) 510 513 { 511 const Window scalEL = getSPS()->getScaledRefLayerWindow( );514 const Window scalEL = getSPS()->getScaledRefLayerWindow(i); 512 515 Bool zeroOffsets = ( scalEL.getWindowLeftOffset() == 0 && scalEL.getWindowRightOffset() == 0 && scalEL.getWindowTopOffset() == 0 && scalEL.getWindowBottomOffset() == 0 ); 513 516 … … 546 549 for(UInt i = 0; i < m_cVPS.getNumDirectRefLayers( m_layerId ); i++ ) 547 550 { 548 const Window scalEL = getSPS()->getScaledRefLayerWindow( );551 const Window scalEL = getSPS()->getScaledRefLayerWindow(i); 549 552 Bool zeroOffsets = ( scalEL.getWindowLeftOffset() == 0 && scalEL.getWindowRightOffset() == 0 && scalEL.getWindowTopOffset() == 0 && scalEL.getWindowBottomOffset() == 0 ); 550 553 … … 599 602 #endif 600 603 #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 } 602 609 #endif 603 610 ProfileTierLevel& profileTierLevel = *m_cSPS.getPTL()->getGeneralPTL(); -
branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncTop.h
r250 r288 140 140 #endif 141 141 #if SCALED_REF_LAYER_OFFSETS 142 Window m_scaledRefLayerWindow; 142 UInt m_numScaledRefLayerOffsets; 143 Window m_scaledRefLayerWindow[MAX_LAYERS]; 143 144 #endif 144 145 protected: … … 207 208 #endif 208 209 #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]; } 210 213 #endif 211 214
Note: See TracChangeset for help on using the changeset viewer.