Changeset 758 in 3DVCSoftware for trunk/source/Lib/TLibDecoder
- Timestamp:
- 3 Jan 2014, 17:43:40 (11 years ago)
- Location:
- trunk/source/Lib/TLibDecoder
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp
r738 r758 215 215 } 216 216 217 #if DLT_DIFF_CODING_IN_PPS 218 Void TDecCavlc::parsePPS(TComPPS* pcPPS, TComVPS* pcVPS ) 219 #else 217 220 Void TDecCavlc::parsePPS(TComPPS* pcPPS) 221 #endif 218 222 { 219 223 #if ENC_DEC_TRACE … … 364 368 if (uiCode) 365 369 { 366 while ( xMoreRbspData() ) 367 { 368 READ_FLAG( uiCode, "pps_extension_data_flag"); 369 } 370 } 371 } 370 #if DLT_DIFF_CODING_IN_PPS 371 parsePPSExtension( pcPPS, pcVPS ); 372 READ_FLAG( uiCode, "pps_extension2_flag"); 373 if ( uiCode ) 374 { 375 #endif 376 while ( xMoreRbspData() ) 377 { 378 READ_FLAG( uiCode, "pps_extension_data_flag"); 379 } 380 #if DLT_DIFF_CODING_IN_PPS 381 } 382 #endif 383 } 384 } 385 386 #if DLT_DIFF_CODING_IN_PPS 387 Void TDecCavlc::parsePPSExtension( TComPPS* pcPPS, TComVPS* pcVPS ) 388 { 389 UInt uiCode = 0; 390 TComDLT* pcDLT = new TComDLT; 391 392 READ_FLAG(uiCode, "dlt_present_flag"); 393 pcDLT->setDltPresentFlag( (uiCode == 1) ? true : false ); 394 395 if ( pcDLT->getDltPresentFlag() ) 396 { 397 READ_CODE(6, uiCode, "pps_depth_layers_minus1"); 398 pcDLT->setNumDepthViews( uiCode ); 399 400 READ_CODE(4, uiCode, "pps_bit_depth_for_depth_views_minus8"); 401 pcDLT->setDepthViewBitDepth( (uiCode+8) ); 402 403 for( Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ ) 404 { 405 if ( i != 0 ) 406 { 407 if( pcVPS->getDepthId( i ) == 1 ) 408 { 409 READ_FLAG(uiCode, "dlt_flag[i]"); 410 pcDLT->setUseDLTFlag(i, (uiCode == 1) ? true : false); 411 412 if ( pcDLT->getUseDLTFlag( i ) ) 413 { 414 Bool bDltBitMapRepFlag = false; 415 UInt uiMaxDiff = 0xffffffff; 416 UInt uiMinDiff = 0; 417 UInt uiCodeLength = 0; 418 419 READ_FLAG(uiCode, "inter_view_dlt_pred_enable_flag[ i ]"); 420 pcDLT->setInterViewDltPredEnableFlag( i, (uiCode == 1) ? true : false ); 421 422 if ( pcDLT->getInterViewDltPredEnableFlag( i ) == false ) 423 { 424 READ_FLAG(uiCode, "dlt_bit_map_rep_flag[ layerId ]"); 425 bDltBitMapRepFlag = (uiCode == 1) ? true : false; 426 } 427 else 428 { 429 bDltBitMapRepFlag = false; 430 } 431 432 UInt uiNumDepthValues = 0; 433 Int aiIdx2DepthValue[256]; 434 435 // Bit map 436 if ( bDltBitMapRepFlag ) 437 { 438 for (UInt d=0; d<256; d++) 439 { 440 READ_FLAG(uiCode, "dlt_bit_map_flag[ layerId ][ j ]"); 441 if (uiCode == 1) 442 { 443 aiIdx2DepthValue[uiNumDepthValues] = d; 444 uiNumDepthValues++; 445 } 446 } 447 } 448 // Diff Coding 449 else 450 { 451 READ_CODE(8, uiNumDepthValues, "num_depth_values_in_dlt[i]"); // num_entry 452 453 #if !H_3D_DELTA_DLT 454 if ( pcDLT->getInterViewDltPredEnableFlag( i ) == false ) // Single-view DLT Diff Coding 455 #endif 456 { 457 // The condition if( pcVPS->getNumDepthValues(i) > 0 ) is always true since for Single-view Diff Coding, there is at least one depth value in depth component. 458 459 if (uiNumDepthValues > 1) 460 { 461 READ_CODE(8, uiCode, "max_diff[ layerId ]"); 462 uiMaxDiff = uiCode; 463 } 464 else 465 { 466 uiMaxDiff = 0; // when there is only one value in DLT 467 } 468 469 if (uiNumDepthValues > 2) 470 { 471 uiCodeLength = (UInt) ceil(Log2(uiMaxDiff + 1)); 472 READ_CODE(uiCodeLength, uiCode, "min_diff_minus1[ layerId ]"); 473 uiMinDiff = uiCode + 1; 474 } 475 else 476 { 477 uiMinDiff = uiMaxDiff; // when there are only one or two values in DLT 478 } 479 480 READ_CODE(8, uiCode, "dlt_depth_value0[layerId]"); // entry0 481 aiIdx2DepthValue[0] = uiCode; 482 483 if (uiMaxDiff == uiMinDiff) 484 { 485 for (UInt d=1; d<uiNumDepthValues; d++) 486 { 487 aiIdx2DepthValue[d] = aiIdx2DepthValue[d-1] + uiMinDiff + 0; 488 } 489 } 490 else 491 { 492 uiCodeLength = (UInt) ceil(Log2(uiMaxDiff - uiMinDiff + 1)); 493 for (UInt d=1; d<uiNumDepthValues; d++) 494 { 495 READ_CODE(uiCodeLength, uiCode, "dlt_depth_value_diff_minus_min[ layerId ][ j ]"); 496 aiIdx2DepthValue[d] = aiIdx2DepthValue[d-1] + uiMinDiff + uiCode; 497 } 498 } 499 500 } 501 } 502 503 #if H_3D_DELTA_DLT 504 if( pcDLT->getInterViewDltPredEnableFlag( i ) ) 505 { 506 // interpret decoded values as delta DLT 507 AOF( pcVPS->getDepthId( 1 ) == 1 ); 508 AOF( i > 1 ); 509 // assumes ref layer id to be 1 510 Int* piRefDLT = pcDLT->idx2DepthValue( 1 ); 511 UInt uiRefNum = pcDLT->getNumDepthValues( 1 ); 512 pcDLT->setDeltaDLT(i, piRefDLT, uiRefNum, aiIdx2DepthValue, uiNumDepthValues); 513 } 514 else 515 { 516 // store final DLT 517 pcDLT->setDepthLUTs(i, aiIdx2DepthValue, uiNumDepthValues); 518 } 519 #else 520 // store final DLT 521 pcDLT->setDepthLUTs(i, aiIdx2DepthValue, uiNumDepthValues); 522 #endif 523 } 524 } 525 } 526 } 527 } 528 529 pcPPS->setDLT( pcDLT ); 530 } 531 #endif 372 532 373 533 Void TDecCavlc::parseVUI(TComVUI* pcVUI, TComSPS *pcSPS) … … 889 1049 #endif 890 1050 1051 #if !CAM_HLS_F0136_F0045_F0082 891 1052 UInt uiCamParPrecision = 0; 892 1053 Bool bCamParSlice = false; … … 908 1069 } 909 1070 pcSPS->initCamParaSPS( viewIndex, uiCamParPrecision, bCamParSlice, m_aaiTempScale, m_aaiTempOffset ); 1071 #endif 910 1072 } 911 1073 #endif … … 1019 1181 #if H_3D 1020 1182 m_pcBitstream->readOutTrailingBits(); 1183 #if CAM_HLS_F0136_F0045_F0082 1184 pcVPS->createCamPars(pcVPS->getNumViews()); 1185 #endif 1021 1186 parseVPSExtension2( pcVPS ); 1022 1187 READ_FLAG( uiCode, "vps_extension3_flag" ); … … 1738 1903 // READ_FLAG( uiCode, "lim_qt_pred_flag[i]"); pcVPS->setLimQtPreFlag ( i, uiCode == 1 ? true : false ); 1739 1904 #if H_3D_DIM_DLT 1905 #if !DLT_DIFF_CODING_IN_PPS 1740 1906 if( pcVPS->getVpsDepthModesFlag( i ) ) 1741 1907 { … … 1763 1929 } 1764 1930 #endif 1931 #endif 1765 1932 #if H_3D_INTER_SDC 1766 1933 READ_FLAG( uiCode, "depth_inter_SDC_flag" ); pcVPS->setInterSDCFlag( i, uiCode ? true : false ); … … 1769 1936 } 1770 1937 } 1938 #if CAM_HLS_F0136_F0045_F0082 1939 UInt uiCamParPrecision = 0; 1940 Bool bCamParSlice = false; 1941 Bool bCamParPresentFlag = false; 1942 1943 READ_UVLC( uiCamParPrecision, "cp_precision" ); 1944 for (UInt viewIndex=0; viewIndex<pcVPS->getNumViews(); viewIndex++) 1945 { 1946 READ_FLAG( uiCode, "cp_present_flag[i]" ); bCamParPresentFlag = ( uiCode == 1); 1947 if ( bCamParPresentFlag ) 1948 { 1949 READ_FLAG( uiCode, "cp_in_slice_segment_header_flag[i]" ); bCamParSlice = ( uiCode == 1); 1950 if ( !bCamParSlice ) 1951 { 1952 for( UInt uiBaseIndex = 0; uiBaseIndex < viewIndex; uiBaseIndex++ ) 1953 { 1954 Int iCode; 1955 READ_SVLC( iCode, "vps_cp_scale" ); m_aaiTempScale [ uiBaseIndex ][ viewIndex ] = iCode; 1956 READ_SVLC( iCode, "vps_cp_off" ); m_aaiTempOffset [ uiBaseIndex ][ viewIndex ] = iCode; 1957 READ_SVLC( iCode, "vps_cp_inv_scale_plus_scale" ); m_aaiTempScale [ viewIndex ][ uiBaseIndex ] = iCode - m_aaiTempScale [ uiBaseIndex ][ viewIndex ]; 1958 READ_SVLC( iCode, "vps_cp_inv_off_plus_off" ); m_aaiTempOffset [ viewIndex ][ uiBaseIndex ] = iCode - m_aaiTempOffset[ uiBaseIndex ][ viewIndex ]; 1959 } 1960 } 1961 pcVPS->initCamParaVPS( viewIndex, bCamParPresentFlag, uiCamParPrecision, bCamParSlice, m_aaiTempScale, m_aaiTempOffset ); 1962 } 1963 } 1964 #endif 1771 1965 READ_FLAG( uiCode, "iv_mv_scaling_flag"); pcVPS->setIvMvScalingFlag( uiCode == 1 ? true : false ); 1772 1966 } … … 2495 2689 } 2496 2690 2691 #if CAM_HLS_F0044 2692 #if CAM_HLS_F0136_F0045_F0082 2693 if( rpcSlice->getVPS()->hasCamParInSliceHeader( rpcSlice->getViewIndex() ) && !rpcSlice->getIsDepth() ) 2694 #else 2695 if( rpcSlice->getSPS()->hasCamParInSliceHeader() ) 2696 #endif 2697 { 2698 UInt uiViewIndex = rpcSlice->getViewIndex(); 2699 for( UInt uiBaseIndex = 0; uiBaseIndex < uiViewIndex; uiBaseIndex++ ) 2700 { 2701 READ_SVLC( iCode, "cp_scale" ); m_aaiTempScale [ uiBaseIndex ][ uiViewIndex ] = iCode; 2702 READ_SVLC( iCode, "cp_off" ); m_aaiTempOffset[ uiBaseIndex ][ uiViewIndex ] = iCode; 2703 READ_SVLC( iCode, "cp_inv_scale_plus_scale" ); m_aaiTempScale [ uiViewIndex ][ uiBaseIndex ] = iCode - m_aaiTempScale [ uiBaseIndex ][ uiViewIndex ]; 2704 READ_SVLC( iCode, "cp_inv_off_plus_off" ); m_aaiTempOffset[ uiViewIndex ][ uiBaseIndex ] = iCode - m_aaiTempOffset[ uiBaseIndex ][ uiViewIndex ]; 2705 } 2706 rpcSlice->setCamparaSlice( m_aaiTempScale, m_aaiTempOffset ); 2707 } 2708 2709 #endif 2710 2497 2711 if(pps->getSliceHeaderExtensionPresentFlag()) 2498 2712 { 2499 2713 READ_UVLC(uiCode,"slice_header_extension_length"); 2500 #if H_3D 2714 #if H_3D && !CAM_HLS_F0044 2715 #if CAM_HLS_F0136_F0045_F0082 2716 if( rpcSlice->getVPS()->hasCamParInSliceHeader( rpcSlice->getViewIndex() ) && !rpcSlice->getIsDepth() ) 2717 #else 2501 2718 if( rpcSlice->getSPS()->hasCamParInSliceHeader() ) 2719 #endif 2502 2720 { 2503 2721 UInt uiViewIndex = rpcSlice->getViewIndex(); -
trunk/source/Lib/TLibDecoder/TDecCAVLC.h
r738 r758 105 105 Void parseSPS ( TComSPS* pcSPS ); 106 106 #endif 107 108 #if H_3D && DLT_DIFF_CODING_IN_PPS 109 Void parsePPS ( TComPPS* pcPPS, TComVPS* pcVPS ); 110 Void parsePPSExtension ( TComPPS* pcPPS, TComVPS* pcVPS ); 111 #else 107 112 Void parsePPS ( TComPPS* pcPPS); 113 #endif 114 108 115 Void parseVUI ( TComVUI* pcVUI, TComSPS* pcSPS ); 109 116 Void parseSEI ( SEIMessages& ); -
trunk/source/Lib/TLibDecoder/TDecCu.cpp
r735 r758 781 781 { 782 782 #if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159 783 if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) ) 783 #if DLT_DIFF_CODING_IN_PPS 784 if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getPPS()->getDLT()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) ) 785 #else 786 if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) ) 787 #endif 784 788 { 785 pReco [ uiX ] = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getVPS()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) ); 789 #if DLT_DIFF_CODING_IN_PPS 790 pReco [ uiX ] = pcCU->getSlice()->getPPS()->getDLT()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getPPS()->getDLT()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getPPS()->getDLT()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) ); 791 #else 792 pReco [ uiX ] = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getVPS()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) ); 793 #endif 786 794 } 787 795 else … … 1000 1008 { 1001 1009 #if H_3D_DIM_DLT 1010 #if DLT_DIFF_CODING_IN_PPS 1011 Pel pPredIdx = pcCU->getSlice()->getPPS()->getDLT()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), apDCPredValues[uiSegment] ); 1012 Pel pResiIdx = pcCU->getSDCSegmentDCOffset(uiSegment, uiAbsPartIdx); 1013 Pel pRecoValue = pcCU->getSlice()->getPPS()->getDLT()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), pPredIdx + pResiIdx ); 1014 #else 1002 1015 Pel pPredIdx = pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), apDCPredValues[uiSegment] ); 1003 1016 Pel pResiIdx = pcCU->getSDCSegmentDCOffset(uiSegment, uiAbsPartIdx); 1004 1017 Pel pRecoValue = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), pPredIdx + pResiIdx ); 1005 1018 #endif 1019 1006 1020 apDCResiValues[uiSegment] = pRecoValue - apDCPredValues[uiSegment]; 1007 1021 #else -
trunk/source/Lib/TLibDecoder/TDecEntropy.h
r655 r758 71 71 virtual Void parseSPS ( TComSPS* pcSPS ) = 0; 72 72 #endif 73 #if DLT_DIFF_CODING_IN_PPS 74 virtual Void parsePPS ( TComPPS* pcPPS, TComVPS* pcVPS ) = 0; 75 #else 73 76 virtual Void parsePPS ( TComPPS* pcPPS ) = 0; 77 #endif 74 78 75 79 virtual Void parseSliceHeader ( TComSlice*& rpcSlice, ParameterSetManagerDecoder *parameterSetManager) = 0; … … 148 152 Void decodeSPS ( TComSPS* pcSPS ) { m_pcEntropyDecoderIf->parseSPS(pcSPS); } 149 153 #endif 154 #if DLT_DIFF_CODING_IN_PPS 155 Void decodePPS ( TComPPS* pcPPS, TComVPS* pcVPS ) { m_pcEntropyDecoderIf->parsePPS(pcPPS, pcVPS); } 156 #else 150 157 Void decodePPS ( TComPPS* pcPPS ) { m_pcEntropyDecoderIf->parsePPS(pcPPS); } 158 #endif 151 159 Void decodeSliceHeader ( TComSlice*& rpcSlice, ParameterSetManagerDecoder *parameterSetManager) { m_pcEntropyDecoderIf->parseSliceHeader(rpcSlice, parameterSetManager); } 152 160 -
trunk/source/Lib/TLibDecoder/TDecSbac.cpp
r724 r758 568 568 569 569 #if H_3D_DIM_DLT 570 #if DLT_DIFF_CODING_IN_PPS 571 UInt uiMaxResidualBits = pcCU->getSlice()->getPPS()->getDLT()->getBitsPerDepthValue( pcCU->getSlice()->getLayerIdInVps() ); 572 #else 570 573 UInt uiMaxResidualBits = pcCU->getSlice()->getVPS()->getBitsPerDepthValue( pcCU->getSlice()->getLayerIdInVps() ); 574 #endif 571 575 #else 572 576 UInt uiMaxResidualBits = g_bitDepthY; … … 592 596 UInt uiCount = 0; 593 597 #if H_3D_DIM_DLT 598 #if DLT_DIFF_CODING_IN_PPS 599 UInt uiNumDepthValues = pcCU->getSlice()->getPPS()->getDLT()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ); 600 #else 594 601 UInt uiNumDepthValues = pcCU->getSlice()->getVPS()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ); 602 #endif 595 603 #else 596 604 UInt uiNumDepthValues = ((1 << g_bitDepthY)-1); -
trunk/source/Lib/TLibDecoder/TDecSbac.h
r724 r758 81 81 Void parseSPS ( TComSPS* /*pcSPS*/ ) {} 82 82 #endif 83 #if DLT_DIFF_CODING_IN_PPS 84 Void parsePPS ( TComPPS* /*pcPPS*/, TComVPS* /*pcVPS*/ ) {} 85 #else 83 86 Void parsePPS ( TComPPS* /*pcPPS*/ ) {} 87 #endif 84 88 85 89 Void parseSliceHeader ( TComSlice*& /*rpcSlice*/, ParameterSetManagerDecoder* /*parameterSetManager*/) {} -
trunk/source/Lib/TLibDecoder/TDecTop.cpp
r738 r758 228 228 m_uiMaxViewIndex = std::max( m_uiMaxViewIndex, uiViewIndex ); 229 229 m_aiViewId[ uiViewIndex ] = pcSlice->getViewId(); 230 #if CAM_HLS_F0136_F0045_F0082 231 if( uiViewIndex == 1 ) 232 { 233 m_uiCamParsCodedPrecision = pcSlice->getVPS()->getCamParPrecision (); 234 m_bCamParsVaryOverTime = pcSlice->getVPS()->hasCamParInSliceHeader ( uiViewIndex ); 235 } 236 else if( uiViewIndex > 1 ) 237 { 238 AOF( m_uiCamParsCodedPrecision == pcSlice->getVPS()->getCamParPrecision () ); 239 AOF( m_bCamParsVaryOverTime == pcSlice->getVPS()->hasCamParInSliceHeader ( uiViewIndex ) ); 240 } 241 #else 230 242 if( uiViewIndex == 1 ) 231 243 { … … 238 250 AOF( m_bCamParsVaryOverTime == pcSlice->getSPS()->hasCamParInSliceHeader () ); 239 251 } 252 #endif 240 253 for( UInt uiBaseIndex = 0; uiBaseIndex < uiViewIndex; uiBaseIndex++ ) 241 254 { … … 251 264 else 252 265 { 266 #if CAM_HLS_F0136_F0045_F0082 267 m_aaiCodedScale [ uiBaseIndex ][ uiViewIndex ] = pcSlice->getVPS()->getCodedScale (uiViewIndex) [ uiBaseIndex ]; 268 m_aaiCodedOffset[ uiBaseIndex ][ uiViewIndex ] = pcSlice->getVPS()->getCodedOffset (uiViewIndex) [ uiBaseIndex ]; 269 m_aaiCodedScale [ uiViewIndex ][ uiBaseIndex ] = pcSlice->getVPS()->getInvCodedScale (uiViewIndex) [ uiBaseIndex ]; 270 m_aaiCodedOffset[ uiViewIndex ][ uiBaseIndex ] = pcSlice->getVPS()->getInvCodedOffset(uiViewIndex) [ uiBaseIndex ]; 271 #else 253 272 m_aaiCodedScale [ uiBaseIndex ][ uiViewIndex ] = pcSlice->getSPS()->getCodedScale () [ uiBaseIndex ]; 254 273 m_aaiCodedOffset[ uiBaseIndex ][ uiViewIndex ] = pcSlice->getSPS()->getCodedOffset () [ uiBaseIndex ]; 255 274 m_aaiCodedScale [ uiViewIndex ][ uiBaseIndex ] = pcSlice->getSPS()->getInvCodedScale () [ uiBaseIndex ]; 256 275 m_aaiCodedOffset[ uiViewIndex ][ uiBaseIndex ] = pcSlice->getSPS()->getInvCodedOffset() [ uiBaseIndex ]; 276 #endif 257 277 xInitLUTs( uiBaseIndex, uiViewIndex, m_aaiCodedScale[ uiBaseIndex ][ uiViewIndex ], m_aaiCodedOffset[ uiBaseIndex ][ uiViewIndex ], m_adBaseViewShiftLUT, m_aiBaseViewShiftLUT ); 258 278 xInitLUTs( uiViewIndex, uiBaseIndex, m_aaiCodedScale[ uiViewIndex ][ uiBaseIndex ], m_aaiCodedOffset[ uiViewIndex ][ uiBaseIndex ], m_adBaseViewShiftLUT, m_aiBaseViewShiftLUT ); … … 286 306 CamParsCollector::copyCamParamForSlice( TComSlice* pcSlice ) 287 307 { 308 #if !CAM_HLS_F0136_F0045_F0082 288 309 UInt uiViewIndex = pcSlice->getViewIndex(); 289 310 290 311 pcSlice->getSPS()->initCamParaSPS( uiViewIndex, m_uiCamParsCodedPrecision, m_bCamParsVaryOverTime, m_aaiCodedScale, m_aaiCodedOffset ); 291 312 #endif 292 313 if( m_bCamParsVaryOverTime ) 293 314 { … … 1109 1130 if( pcSlice->getIsDepth() ) 1110 1131 { 1132 #if !CAM_HLS_F0136_F0045_F0082 1111 1133 pcSlice->getSPS()->setHasCamParInSliceHeader( false ); 1134 #endif 1112 1135 } 1113 1136 #endif … … 1151 1174 pps->setLayerId( getLayerId() ); 1152 1175 #endif 1176 #if DLT_DIFF_CODING_IN_PPS 1177 // Assuming that all PPS indirectly refer to the same VPS via different SPS 1178 // There is no parsing dependency in decoding DLT in PPS. 1179 // The VPS information passed to decodePPS() is used to arrange the decoded DLT tables to their corresponding layers. 1180 // This is equivalent to the process of 1181 // Step 1) decoding DLT tables based on the number of depth layers, and 1182 // Step 2) mapping DLT tables to the depth layers 1183 // as descripted in the 3D-HEVC WD. 1184 TComVPS* vps = m_parameterSetManagerDecoder.getPrefetchedVPS( 0 ); 1185 m_cEntropyDecoder.decodePPS( pps, vps ); 1186 #else 1153 1187 m_cEntropyDecoder.decodePPS( pps ); 1188 #endif 1154 1189 m_parameterSetManagerDecoder.storePrefetchedPPS( pps ); 1155 1190 }
Note: See TracChangeset for help on using the changeset viewer.