Changeset 11 in 3DVCSoftware for branches/0.2-poznan-univ/source/Lib/TLibDecoder
- Timestamp:
- 5 Feb 2012, 22:00:22 (13 years ago)
- Location:
- branches/0.2-poznan-univ/source/Lib/TLibDecoder
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecCAVLC.cpp
r5 r11 285 285 for( UInt uiBaseId = 0; uiBaseId < uiViewId; uiBaseId++ ) 286 286 { 287 xReadSvlc( iCode ); m_aaiTempScale [ uiBaseId ][ uiViewId ] = iCode; 288 xReadSvlc( iCode ); m_aaiTempOffset[ uiBaseId ][ uiViewId ] = iCode; 287 xReadSvlc( iCode ); m_aaiTempScale [ uiBaseId ][ uiViewId ] = iCode; //printf("SPS Scale: %d\n",iCode); 288 xReadSvlc( iCode ); m_aaiTempOffset[ uiBaseId ][ uiViewId ] = iCode; //printf("SPS Offset: %d\n",iCode); 289 289 xReadSvlc( iCode ); m_aaiTempScale [ uiViewId ][ uiBaseId ] = iCode - m_aaiTempScale [ uiBaseId ][ uiViewId ]; 290 290 xReadSvlc( iCode ); m_aaiTempOffset[ uiViewId ][ uiBaseId ] = iCode - m_aaiTempOffset[ uiBaseId ][ uiViewId ]; … … 517 517 for( UInt uiBaseId = 0; uiBaseId < uiViewId; uiBaseId++ ) 518 518 { 519 xReadSvlc( iCode ); m_aaiTempScale [ uiBaseId ][ uiViewId ] = iCode; 520 xReadSvlc( iCode ); m_aaiTempOffset[ uiBaseId ][ uiViewId ] = iCode; 519 xReadSvlc( iCode ); m_aaiTempScale [ uiBaseId ][ uiViewId ] = iCode; printf("Scale: %d\n",iCode); 520 xReadSvlc( iCode ); m_aaiTempOffset[ uiBaseId ][ uiViewId ] = iCode; printf("Offset: %d\n",iCode); 521 521 xReadSvlc( iCode ); m_aaiTempScale [ uiViewId ][ uiBaseId ] = iCode - m_aaiTempScale [ uiBaseId ][ uiViewId ]; 522 522 xReadSvlc( iCode ); m_aaiTempOffset[ uiViewId ][ uiBaseId ] = iCode - m_aaiTempOffset[ uiBaseId ][ uiViewId ]; -
branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecCu.cpp
r5 r11 49 49 m_ppcYuvReco = NULL; 50 50 m_ppcYuvResPred = NULL; 51 #if POZNAN_AVAIL_MAP 52 m_ppcYuvAvail = NULL; 53 #endif 54 #if POZNAN_SYNTH_VIEW 55 m_ppcYuvSynth = NULL; 56 #endif 51 57 m_ppcCU = NULL; 52 58 } … … 75 81 m_ppcYuvReco = new TComYuv* [m_uiMaxDepth-1]; 76 82 m_ppcYuvResPred = new TComYuv* [m_uiMaxDepth-1]; 83 #if POZNAN_AVAIL_MAP 84 m_ppcYuvAvail = new TComYuv* [m_uiMaxDepth-1]; 85 #endif 86 #if POZNAN_SYNTH_VIEW 87 m_ppcYuvSynth = new TComYuv* [m_uiMaxDepth-1]; 88 #endif 77 89 m_ppcCU = new TComDataCU* [m_uiMaxDepth-1]; 78 90 … … 87 99 m_ppcYuvReco [ui] = new TComYuv; m_ppcYuvReco [ui]->create( uiWidth, uiHeight ); 88 100 m_ppcYuvResPred[ui] = new TComYuv; m_ppcYuvResPred[ui]->create( uiWidth, uiHeight ); 101 #if POZNAN_AVAIL_MAP 102 m_ppcYuvAvail [ui] = new TComYuv; m_ppcYuvAvail [ui]->create( uiWidth, uiHeight ); 103 #endif 104 #if POZNAN_SYNTH_VIEW 105 m_ppcYuvSynth [ui] = new TComYuv; m_ppcYuvSynth [ui]->create( uiWidth, uiHeight ); 106 #endif 107 89 108 m_ppcCU [ui] = new TComDataCU; m_ppcCU [ui]->create( uiNumPartitions, uiWidth, uiHeight, true ); 90 109 } … … 106 125 m_ppcYuvReco [ui]->destroy(); delete m_ppcYuvReco [ui]; m_ppcYuvReco [ui] = NULL; 107 126 m_ppcYuvResPred[ui]->destroy(); delete m_ppcYuvResPred[ui]; m_ppcYuvResPred[ui] = NULL; 127 #if POZNAN_AVAIL_MAP 128 m_ppcYuvAvail [ui]->destroy(); delete m_ppcYuvAvail [ui]; m_ppcYuvAvail [ui] = NULL; 129 #endif 130 #if POZNAN_SYNTH_VIEW 131 m_ppcYuvSynth [ui]->destroy(); delete m_ppcYuvSynth [ui]; m_ppcYuvSynth [ui] = NULL; 132 #endif 108 133 m_ppcCU [ui]->destroy(); delete m_ppcCU [ui]; m_ppcCU [ui] = NULL; 109 134 } … … 112 137 delete [] m_ppcYuvReco; m_ppcYuvReco = NULL; 113 138 delete [] m_ppcYuvResPred; m_ppcYuvResPred = NULL; 139 #if POZNAN_AVAIL_MAP 140 delete [] m_ppcYuvAvail; m_ppcYuvAvail = NULL; 141 #endif 142 #if POZNAN_SYNTH_VIEW 143 delete [] m_ppcYuvSynth; m_ppcYuvSynth = NULL; 144 #endif 145 114 146 delete [] m_ppcCU; m_ppcCU = NULL; 115 147 } … … 184 216 { 185 217 TComPic* pcPic = pcCU->getPic(); 218 219 #if POZNAN_ENCODE_ONLY_DISOCCLUDED_CU 220 Bool bWholeCUCanBeSynthesized = false; 221 Bool bOneSubCUCanNotBeSynthesied = false; 222 Bool bSubCUCanBeSynthesized[4]; 223 Bool * pbSubCUCanBeSynthesized = bSubCUCanBeSynthesized; 224 pcPic->checkSynthesisAvailability(pcCU, pcCU->getAddr(), uiAbsPartIdx, uiDepth, pbSubCUCanBeSynthesized); //KUBA SYNTH 225 Int iSubCUCanNotBeSynthesized = 0; 226 Int iSubCUCanBeSynthesizedCnt = 0; 227 for(Int i = 0; i < 4; i++) 228 { 229 if (!bSubCUCanBeSynthesized[i]) 230 { 231 iSubCUCanNotBeSynthesized = i; 232 } 233 else 234 { 235 iSubCUCanBeSynthesizedCnt ++; 236 } 237 } 238 if(iSubCUCanBeSynthesizedCnt == 4) 239 { 240 bWholeCUCanBeSynthesized = true; 241 } 242 else if(iSubCUCanBeSynthesizedCnt == 3) 243 { 244 bOneSubCUCanNotBeSynthesied = true; 245 } 246 247 if(bWholeCUCanBeSynthesized) 248 { 249 pcCU->setPredModeSubParts( MODE_SYNTH, uiAbsPartIdx, uiDepth ); 250 pcCU->setDepthSubParts( uiDepth, uiAbsPartIdx ); 251 pcCU->setPartSizeSubParts( SIZE_2Nx2N, uiAbsPartIdx, uiDepth ); 252 pcCU->setSizeSubParts( g_uiMaxCUWidth>>uiDepth, g_uiMaxCUHeight>>uiDepth, uiAbsPartIdx, uiDepth ); 253 //pcCU->setSizeSubParts( pcCU->getSlice()->getSPS()->getMaxCUWidth()>>uiDepth, pcCU->getSlice()->getSPS()->getMaxCUHeight()>>uiDepth, uiAbsPartIdx, uiDepth ); 254 return; 255 } 256 #endif 257 186 258 UInt uiCurNumParts = pcPic->getNumPartInCU() >> (uiDepth<<1); 187 259 UInt uiQNumParts = uiCurNumParts>>2; … … 195 267 if( ( uiRPelX < pcCU->getSlice()->getSPS()->getWidth() ) && ( uiBPelY < pcCU->getSlice()->getSPS()->getHeight() ) ) 196 268 { 269 #if POZNAN_ENCODE_ONLY_DISOCCLUDED_CU 270 if(bOneSubCUCanNotBeSynthesied && (uiDepth < g_uiMaxCUDepth - g_uiAddCUDepth )) // KUBA SYNTH check if CU has 3 synthesied subCU - no split flag is send in that case and CU split is assumed 271 { 272 pcCU->setDepthSubParts( uiDepth + 1, uiAbsPartIdx ); 273 } 274 else 275 #endif 197 276 #if HHI_MPI 198 277 if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 || uiDepth < pcCU->getTextureModeDepth( uiAbsPartIdx ) ) … … 367 446 { 368 447 TComPic* pcPic = pcCU->getPic(); 448 #if POZNAN_SYNTH_VIEW 449 if(pcPic->getPicYuvSynth()) m_ppcYuvSynth[uiDepth]->copyFromPicYuv( pcPic->getPicYuvSynth(), pcCU->getAddr(), uiAbsPartIdx ); 450 #endif 451 #if POZNAN_AVAIL_MAP 452 if(pcPic->getPicYuvAvail()) m_ppcYuvAvail[uiDepth]->copyFromPicYuv( pcPic->getPicYuvAvail(), pcCU->getAddr(), uiAbsPartIdx ); 453 #endif 369 454 370 455 Bool bBoundary = false; … … 411 496 xReconIntraQT( m_ppcCU[uiDepth], uiAbsPartIdx, uiDepth ); 412 497 break; 498 #if POZNAN_ENCODE_ONLY_DISOCCLUDED_CU 499 case MODE_SYNTH: 500 // break; 501 #if POZNAN_FILL_OCCLUDED_CU_WITH_SYNTHESIS 502 m_ppcYuvReco[uiDepth]->copyFromPicYuv(pcPic->getPicYuvSynth(), pcCU->getAddr(), uiAbsPartIdx); 503 #else 504 m_ppcYuvReco[uiDepth]->copyFromPicYuv(pcPic->getPicYuvAvail(), pcCU->getAddr(), uiAbsPartIdx); //Poprawiæ 505 #endif 506 //m_ppcYuvReco[uiDepth]->clear(); 507 break; 508 #endif 413 509 default: 414 510 assert(0); -
branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecCu.h
r5 r11 61 61 TComYuv** m_ppcYuvReco; ///< array of prediction & reconstruction buffer 62 62 TComYuv** m_ppcYuvResPred; ///< residual prediction buffer 63 #if POZNAN_AVAIL_MAP 64 TComYuv** m_ppcYuvAvail; ///< array of available map buffer 65 #endif 66 #if POZNAN_SYNTH_VIEW 67 TComYuv** m_ppcYuvSynth; ///< array of synth buffer 68 #endif 63 69 TComDataCU** m_ppcCU; ///< CU data array 64 70 -
branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecTop.cpp
r5 r11 53 53 m_aaiCodedScale [ uiId ] = new Int [ MAX_NUMBER_VIEWS ]; 54 54 } 55 #if POZNAN_SYNTH 56 xCreateLUTs ( (UInt)MAX_NUMBER_VIEWS, (UInt)MAX_NUMBER_VIEWS, m_adBaseViewShiftLUT, m_aiBaseViewShiftLUT); 57 58 m_iLog2Precision = LOG2_DISP_PREC_LUT; 59 m_uiBitDepthForLUT = 8; //fixed 60 #endif 55 61 } 56 62 … … 66 72 delete [] m_aiViewOrderIndex; 67 73 delete [] m_aiViewReceived; 74 75 #if POZNAN_SYNTH 76 xDeleteArray( m_adBaseViewShiftLUT, MAX_NUMBER_VIEWS, MAX_NUMBER_VIEWS, 2 ); 77 xDeleteArray( m_aiBaseViewShiftLUT, MAX_NUMBER_VIEWS, MAX_NUMBER_VIEWS, 2 ); 78 #endif 68 79 } 69 80 … … 79 90 m_uiMaxViewId = 0; 80 91 } 92 93 #if POZNAN_SYNTH 94 /* 95 Void 96 CamParsCollector::initLUT(TComSPS &cComSPS) 97 { 98 //===== create arrays ===== 99 //xCreateLUTs ( (UInt)m_iNumberOfBaseViews, (UInt)m_iNumberOfBaseViews, m_adBaseViewShiftLUT, m_aiBaseViewShiftLUT, m_adBaseViewShiftParameter, m_aiBaseViewShiftParameter ); 100 101 102 //xCreate2dArray( (UInt)m_iNumberOfBaseViews, (UInt)m_iNumberOfBaseViews, m_aaiCodedScale ); 103 //xCreate2dArray( (UInt)m_iNumberOfBaseViews, (UInt)m_iNumberOfBaseViews, m_aaiCodedOffset ); 104 //xCreate2dArray( (UInt)m_iNumberOfBaseViews, (UInt)m_iNumberOfBaseViews, m_aaiScaleAndOffsetSet ); 105 //xInit2dArray ( (UInt)m_iNumberOfBaseViews, (UInt)m_iNumberOfBaseViews, m_aaiScaleAndOffsetSet, 0 ); 106 107 //xCreate2dArray( (UInt)m_iNumberOfBaseViews, (UInt)m_iNumberOfBaseViews, m_aaiPdmScaleNomDelta ); 108 //xCreate2dArray( (UInt)m_iNumberOfBaseViews, (UInt)m_iNumberOfBaseViews, m_aaiPdmOffset ); 109 110 //===== init disparity to virtual depth conversion parameters ===== 111 //xSetPdmConversionParams(); 112 113 //===== init arrays for first frame ===== 114 //xSetShiftParametersAndLUT( m_uiFirstFrameId ); 115 }//*/ 116 117 Void 118 CamParsCollector::xCreateLUTs( UInt uiNumberSourceViews, UInt uiNumberTargetViews, Double****& radLUT, Int****& raiLUT) 119 { 120 //AOF( m_uiBitDepthForLUT == 8 ); 121 //AOF(radLUT == NULL && raiLUT == NULL ); 122 123 uiNumberSourceViews = Max( 1, uiNumberSourceViews ); 124 uiNumberTargetViews = Max( 1, uiNumberTargetViews ); 125 126 radLUT = new Double***[ uiNumberSourceViews ]; 127 raiLUT = new Int ***[ uiNumberSourceViews ]; 128 129 for( UInt uiSourceView = 0; uiSourceView < uiNumberSourceViews; uiSourceView++ ) 130 { 131 radLUT [ uiSourceView ] = new Double**[ uiNumberTargetViews ]; 132 raiLUT [ uiSourceView ] = new Int **[ uiNumberTargetViews ]; 133 134 for( UInt uiTargetView = 0; uiTargetView < uiNumberTargetViews; uiTargetView++ ) 135 { 136 radLUT [ uiSourceView ][ uiTargetView ] = new Double*[ 2 ]; 137 radLUT [ uiSourceView ][ uiTargetView ][ 0 ] = new Double [ 257 ]; 138 radLUT [ uiSourceView ][ uiTargetView ][ 1 ] = new Double [ 257 ]; 139 140 raiLUT [ uiSourceView ][ uiTargetView ] = new Int* [ 2 ]; 141 raiLUT [ uiSourceView ][ uiTargetView ][ 0 ] = new Int [ 257 ]; 142 raiLUT [ uiSourceView ][ uiTargetView ][ 1 ] = new Int [ 257 ]; 143 } 144 } 145 } 146 147 Void 148 CamParsCollector::xInitLUTs( UInt uiSourceView, UInt uiTargetView, Int iScale, Int iOffset, Double****& radLUT, Int****& raiLUT) 149 { 150 Int iLog2DivLuma = m_uiBitDepthForLUT + m_uiCamParsCodedPrecision + 1 - m_iLog2Precision; AOF( iLog2DivLuma > 0 ); 151 Int iLog2DivChroma = iLog2DivLuma + 1; 152 153 iOffset <<= m_uiBitDepthForLUT; 154 155 Double dScale = (Double) iScale / (( Double ) ( 1 << iLog2DivLuma )); 156 Double dOffset = (Double) iOffset / (( Double ) ( 1 << iLog2DivLuma )); 157 158 // offsets including rounding offsets 159 Int64 iOffsetLuma = iOffset + ( ( 1 << iLog2DivLuma ) >> 1 ); 160 Int64 iOffsetChroma = iOffset + ( ( 1 << iLog2DivChroma ) >> 1 ); 161 162 for( UInt uiDepthValue = 0; uiDepthValue < 256; uiDepthValue++ ) 163 { 164 // real-valued look-up tables 165 Double dShiftLuma = ( (Double)uiDepthValue * dScale + dOffset ) * Double( 1 << m_iLog2Precision ); 166 Double dShiftChroma = dShiftLuma / 2; 167 radLUT[ uiSourceView ][ uiTargetView ][ 0 ][ uiDepthValue ] = dShiftLuma; 168 radLUT[ uiSourceView ][ uiTargetView ][ 1 ][ uiDepthValue ] = dShiftChroma; 169 170 // integer-valued look-up tables 171 Int64 iTempScale = (Int64)uiDepthValue * iScale; 172 Int64 iTestScale = ( iTempScale + iOffset ); // for checking accuracy of camera parameters 173 Int64 iShiftLuma = ( iTempScale + iOffsetLuma ) >> iLog2DivLuma; 174 Int64 iShiftChroma = ( iTempScale + iOffsetChroma ) >> iLog2DivChroma; 175 raiLUT[ uiSourceView ][ uiTargetView ][ 0 ][ uiDepthValue ] = (Int)iShiftLuma; 176 raiLUT[ uiSourceView ][ uiTargetView ][ 1 ][ uiDepthValue ] = (Int)iShiftChroma; 177 178 // maximum deviation 179 //dMaxDispDev = Max( dMaxDispDev, fabs( Double( (Int) iTestScale ) - dShiftLuma * Double( 1 << iLog2DivLuma ) ) / Double( 1 << iLog2DivLuma ) ); 180 //dMaxRndDispDvL = Max( dMaxRndDispDvL, fabs( Double( (Int) iShiftLuma ) - dShiftLuma ) ); 181 //dMaxRndDispDvC = Max( dMaxRndDispDvC, fabs( Double( (Int) iShiftChroma ) - dShiftChroma ) ); 182 } 183 184 radLUT[ uiSourceView ][ uiTargetView ][ 0 ][ 256 ] = radLUT[ uiSourceView ][ uiTargetView ][ 0 ][ 255 ]; 185 radLUT[ uiSourceView ][ uiTargetView ][ 1 ][ 256 ] = radLUT[ uiSourceView ][ uiTargetView ][ 1 ][ 255 ]; 186 raiLUT[ uiSourceView ][ uiTargetView ][ 0 ][ 256 ] = raiLUT[ uiSourceView ][ uiTargetView ][ 0 ][ 255 ]; 187 raiLUT[ uiSourceView ][ uiTargetView ][ 1 ][ 256 ] = raiLUT[ uiSourceView ][ uiTargetView ][ 1 ][ 255 ]; 188 } 189 190 Bool 191 CamParsCollector::getNearestBaseView( Int iSynthViewIdx, Int &riNearestViewIdx, Int &riRelDistToLeft, Bool& rbRenderFromLeft) 192 { 193 /* 194 riNearestViewIdx = 0; 195 196 Bool bDecencdingVN = ( m_aiSortedBaseViews.size() >= 2 && m_aiSortedBaseViews[ 0 ] > m_aiSortedBaseViews[ 1 ] ); 197 Int iFactor = ( bDecencdingVN ? -1 : 1 ); 198 199 if( ( m_aiBaseId2SortedId[iSynthViewIdx] - m_aiBaseId2SortedId[riNearestViewIdx] ) * iFactor <= 0 ) 200 { 201 rbRenderFromLeft = true; 202 } 203 else 204 { 205 rbRenderFromLeft = false; 206 } 207 208 riRelDistToLeft = 128; //Not used for now; 209 //*/ 210 return true; 211 } 212 213 #endif 81 214 82 215 Void … … 161 294 m_aaiCodedScale [ uiViewId ][ uiBaseId ] = pcSlice->getInvCodedScale () [ uiBaseId ]; 162 295 m_aaiCodedOffset[ uiViewId ][ uiBaseId ] = pcSlice->getInvCodedOffset() [ uiBaseId ]; 296 #if POZNAN_SYNTH 297 xInitLUTs(uiBaseId,uiViewId,m_aaiCodedScale [ uiBaseId ][ uiViewId ],m_aaiCodedOffset[ uiBaseId ][ uiViewId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT); 298 xInitLUTs(uiViewId,uiBaseId,m_aaiCodedScale [ uiViewId ][ uiBaseId ],m_aaiCodedOffset[ uiViewId ][ uiBaseId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT); 299 #endif 163 300 } 164 301 else … … 168 305 m_aaiCodedScale [ uiViewId ][ uiBaseId ] = pcSlice->getSPS()->getInvCodedScale () [ uiBaseId ]; 169 306 m_aaiCodedOffset[ uiViewId ][ uiBaseId ] = pcSlice->getSPS()->getInvCodedOffset() [ uiBaseId ]; 307 #if POZNAN_SYNTH 308 xInitLUTs(uiBaseId,uiViewId,m_aaiCodedScale [ uiBaseId ][ uiViewId ],m_aaiCodedOffset[ uiBaseId ][ uiViewId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT); 309 xInitLUTs(uiViewId,uiBaseId,m_aaiCodedScale [ uiViewId ][ uiBaseId ],m_aaiCodedOffset[ uiViewId ][ uiBaseId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT); 310 #endif 170 311 } 171 312 } … … 182 323 m_aaiCodedScale [ uiViewId ][ uiBaseId ] = pcSlice->getInvCodedScale () [ uiBaseId ]; 183 324 m_aaiCodedOffset[ uiViewId ][ uiBaseId ] = pcSlice->getInvCodedOffset() [ uiBaseId ]; 325 #if POZNAN_SYNTH 326 xInitLUTs(uiBaseId,uiViewId,m_aaiCodedScale [ uiBaseId ][ uiViewId ],m_aaiCodedOffset[ uiBaseId ][ uiViewId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT); 327 xInitLUTs(uiViewId,uiBaseId,m_aaiCodedScale [ uiViewId ][ uiBaseId ],m_aaiCodedOffset[ uiViewId ][ uiBaseId ],m_adBaseViewShiftLUT,m_aiBaseViewShiftLUT); 328 #endif 184 329 } 185 330 } … … 458 603 #if HHI_INTERVIEW_SKIP 459 604 pcPic->removeUsedPelsMapBuffer(); 605 #endif 606 #if POZNAN_AVAIL_MAP 607 pcPic->removeAvailabilityBuffer(); 608 #endif 609 #if POZNAN_SYNTH_VIEW 610 pcPic->removeSynthesisBuffer(); 460 611 #endif 461 612 } … … 724 875 #endif 725 876 877 #if POZNAN_SYNTH 878 if( m_pcCamParsCollector) 879 { 880 m_pcCamParsCollector->setSlice( pcSlice ); 881 } 882 //if(!getIsDepth()) 883 getDecTop()->storeSynthPicsInBuffer(pcSlice->getViewIdx(),pcSlice->getSPS()->getViewOrderIdx(),pcSlice->getPOC(),getIsDepth()); 884 #endif 885 726 886 // Decode a picture 727 887 m_cGopDecoder.decompressGop ( bEos, pcBitstream, pcPic, false ); -
branches/0.2-poznan-univ/source/Lib/TLibDecoder/TDecTop.h
r5 r11 71 71 Void uninit (); 72 72 Void setSlice ( TComSlice* pcSlice ); 73 #if POZNAN_SYNTH 74 Double**** getBaseViewShiftLUTD () { return m_adBaseViewShiftLUT; } 75 Int**** getBaseViewShiftLUTI () { return m_aiBaseViewShiftLUT; } 76 77 Int** getBaseViewOffsetI () { return m_aaiCodedOffset; } 78 Int** getBaseViewScaleI () { return m_aaiCodedScale; } 79 80 Bool getNearestBaseView ( Int iSynthViewIdx, Int &riNearestViewIdx, Int &riRelDistToLeft, Bool& rbRenderFromLeft); 81 #endif 73 82 74 83 private: … … 89 98 Int m_iLastPOC; 90 99 UInt m_uiMaxViewId; 91 }; 100 101 #if POZNAN_SYNTH 102 103 UInt m_uiBitDepthForLUT; 104 UInt m_iLog2Precision; 105 UInt m_uiInputBitDepth; 106 107 // look-up tables 108 Double**** m_adBaseViewShiftLUT; ///< Disparity LUT 109 Int**** m_aiBaseViewShiftLUT; ///< Disparity LUT 110 111 Void xCreateLUTs( UInt uiNumberSourceViews, UInt uiNumberTargetViews, Double****& radLUT, Int****& raiLUT); 112 Void xInitLUTs( UInt uiSourceView, UInt uiTargetView, Int iScale, Int iOffset, Double****& radLUT, Int****& raiLUT); 113 114 template<class T> Void xDeleteArray ( T*& rpt, UInt uiSize1, UInt uiSize2, UInt uiSize3 ); 115 template<class T> Void xDeleteArray ( T*& rpt, UInt uiSize1, UInt uiSize2 ); 116 template<class T> Void xDeleteArray ( T*& rpt, UInt uiSize ); 117 #endif 118 }; 119 120 #if POZNAN_SYNTH 121 template <class T> 122 Void CamParsCollector::xDeleteArray( T*& rpt, UInt uiSize1, UInt uiSize2, UInt uiSize3 ) 123 { 124 if( rpt ) 125 { 126 for( UInt uiK = 0; uiK < uiSize1; uiK++ ) 127 { 128 for( UInt uiL = 0; uiL < uiSize2; uiL++ ) 129 { 130 for( UInt uiM = 0; uiM < uiSize3; uiM++ ) 131 { 132 delete[] rpt[ uiK ][ uiL ][ uiM ]; 133 } 134 delete[] rpt[ uiK ][ uiL ]; 135 } 136 delete[] rpt[ uiK ]; 137 } 138 delete[] rpt; 139 } 140 rpt = NULL; 141 }; 142 143 144 template <class T> 145 Void CamParsCollector::xDeleteArray( T*& rpt, UInt uiSize1, UInt uiSize2 ) 146 { 147 if( rpt ) 148 { 149 for( UInt uiK = 0; uiK < uiSize1; uiK++ ) 150 { 151 for( UInt uiL = 0; uiL < uiSize2; uiL++ ) 152 { 153 delete[] rpt[ uiK ][ uiL ]; 154 } 155 delete[] rpt[ uiK ]; 156 } 157 delete[] rpt; 158 } 159 rpt = NULL; 160 }; 161 162 163 template <class T> 164 Void CamParsCollector::xDeleteArray( T*& rpt, UInt uiSize ) 165 { 166 if( rpt ) 167 { 168 for( UInt uiK = 0; uiK < uiSize; uiK++ ) 169 { 170 delete[] rpt[ uiK ]; 171 } 172 delete[] rpt; 173 } 174 rpt = NULL; 175 }; 176 #endif 92 177 93 178
Note: See TracChangeset for help on using the changeset viewer.