Changeset 758 in 3DVCSoftware for trunk/source/Lib/TLibCommon
- Timestamp:
- 3 Jan 2014, 17:43:40 (11 years ago)
- Location:
- trunk/source/Lib/TLibCommon
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/source/Lib/TLibCommon/TComPrediction.cpp ¶
r724 r758 506 506 { 507 507 #if H_3D_DIM_DLT 508 #if DLT_DIFF_CODING_IN_PPS 509 segDC1 = pcCU->getSlice()->getPPS()->getDLT()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), pcCU->getSlice()->getPPS()->getDLT()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), predDC1 ) + deltaDC1 ); 510 segDC2 = pcCU->getSlice()->getPPS()->getDLT()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), pcCU->getSlice()->getPPS()->getDLT()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), predDC2 ) + deltaDC2 ); 511 #else 508 512 segDC1 = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), predDC1 ) + deltaDC1 ); 509 513 segDC2 = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), predDC2 ) + deltaDC2 ); 514 #endif 510 515 #else 511 516 segDC1 = ClipY( predDC1 + deltaDC1 ); -
TabularUnified trunk/source/Lib/TLibCommon/TComSlice.cpp ¶
r738 r758 782 782 Void TComSlice::setCamparaSlice( Int** aaiScale, Int** aaiOffset ) 783 783 { 784 #if CAM_HLS_F0136_F0045_F0082 785 if( m_pcVPS->hasCamParInSliceHeader( m_viewIndex ) ) 786 #else 784 787 if( m_pcSPS->hasCamParInSliceHeader() ) 788 #endif 785 789 { 786 790 for( UInt uiBaseViewIndex = 0; uiBaseViewIndex < m_viewIndex; uiBaseViewIndex++ ) … … 1816 1820 m_vpsDepthModesFlag [i] = false; 1817 1821 #if H_3D_DIM_DLT 1822 #if !DLT_DIFF_CODING_IN_PPS 1818 1823 m_bUseDLTFlag [i] = false; 1819 1824 … … 1832 1837 } 1833 1838 #endif 1839 #endif 1834 1840 #if H_3D 1835 1841 m_ivMvScalingFlag = true; … … 1902 1908 if (m_repFormat[ i ] != NULL ) delete m_repFormat[ i ]; 1903 1909 #if H_3D_DIM_DLT 1910 #if !DLT_DIFF_CODING_IN_PPS 1904 1911 if ( m_iDepthValue2Idx[i] != 0 ) 1905 1912 { … … 1914 1921 } 1915 1922 #endif 1916 } 1923 #endif 1924 } 1925 #endif 1926 #if CAM_HLS_F0136_F0045_F0082 1927 deleteCamPars(); 1917 1928 #endif 1918 1929 } 1919 1930 1920 1931 #if H_3D_DIM_DLT 1932 #if !DLT_DIFF_CODING_IN_PPS 1921 1933 Void TComVPS::setDepthLUTs(Int layerIdInVps, Int* idxToDepthValueTable, Int iNumDepthValues) 1922 1934 { … … 1980 1992 } 1981 1993 #endif 1994 #endif 1982 1995 1983 1996 #if H_MV … … 2066 2079 return foundLayerIdinNuh; 2067 2080 } 2081 #if CAM_HLS_F0136_F0045_F0082 2082 Void TComVPS::createCamPars(Int iNumViews) 2083 { 2084 Int i = 0, j = 0; 2085 2086 m_bCamParPresent = new Bool[ iNumViews ]; 2087 m_bCamParInSliceHeader = new Bool[ iNumViews ]; 2088 2089 m_aaaiCodedScale = new Int**[ iNumViews ]; 2090 m_aaaiCodedOffset = new Int**[ iNumViews ]; 2091 for ( i = 0; i < iNumViews ; i++ ) 2092 { 2093 m_aaaiCodedScale[i] = new Int*[ 2 ]; 2094 m_aaaiCodedOffset[i] = new Int*[ 2 ]; 2095 for ( j = 0; j < 2; j++ ) 2096 { 2097 m_aaaiCodedScale[i][j] = new Int[ MAX_NUM_LAYERS ]; 2098 m_aaaiCodedOffset[i][j] = new Int[ MAX_NUM_LAYERS ]; 2099 for ( Int k = 0; k < MAX_NUM_LAYERS; k++ ) 2100 { 2101 m_aaaiCodedScale[i][j][k] = 0; 2102 m_aaaiCodedOffset[i][j][k] = 0; 2103 } 2104 } 2105 } 2106 } 2107 2108 Void TComVPS::deleteCamPars() 2109 { 2110 Int iNumViews = getNumViews(); 2111 Int i = 0, j = 0; 2112 2113 if ( m_bCamParPresent != NULL ) 2114 { 2115 delete [] m_bCamParPresent; 2116 } 2117 if ( m_bCamParInSliceHeader != NULL ) 2118 { 2119 delete [] m_bCamParInSliceHeader; 2120 } 2121 2122 if ( m_aaaiCodedScale != NULL ) 2123 { 2124 for ( i = 0; i < iNumViews ; i++ ) 2125 { 2126 for ( j = 0; j < 2; j++ ) 2127 { 2128 delete [] m_aaaiCodedScale[i][j]; 2129 } 2130 delete [] m_aaaiCodedScale[i]; 2131 } 2132 delete [] m_aaaiCodedScale; 2133 } 2134 2135 if ( m_aaaiCodedOffset != NULL ) 2136 { 2137 for ( i = 0; i < iNumViews ; i++ ) 2138 { 2139 for ( j = 0; j < 2; j++ ) 2140 { 2141 delete [] m_aaaiCodedOffset[i][j]; 2142 } 2143 delete [] m_aaaiCodedOffset[i]; 2144 } 2145 delete [] m_aaaiCodedOffset; 2146 } 2147 } 2148 2149 2150 Void 2151 TComVPS::initCamParaVPS( UInt uiViewIndex, Bool bCamParPresent, UInt uiCamParPrecision, Bool bCamParSlice, Int** aaiScale, Int** aaiOffset ) 2152 { 2153 AOT( uiViewIndex != 0 && !bCamParSlice && ( aaiScale == 0 || aaiOffset == 0 ) ); 2154 2155 m_uiCamParPrecision = ( ( uiViewIndex != 0 )? uiCamParPrecision : 0 ); 2156 m_bCamParPresent[ uiViewIndex ] = (( uiViewIndex != 0 )? bCamParPresent : false ); 2157 m_bCamParInSliceHeader[ uiViewIndex ] = ( (uiViewIndex != 0)? bCamParSlice : false ); 2158 2159 if( !m_bCamParInSliceHeader[ uiViewIndex ] ) 2160 { 2161 for( UInt uiBaseViewIndex = 0; uiBaseViewIndex < uiViewIndex; uiBaseViewIndex++ ) 2162 { 2163 m_aaaiCodedScale [ uiViewIndex ][ 0 ][ uiBaseViewIndex ] = aaiScale [ uiBaseViewIndex ][ uiViewIndex ]; 2164 m_aaaiCodedScale [ uiViewIndex ][ 1 ][ uiBaseViewIndex ] = aaiScale [ uiViewIndex ][ uiBaseViewIndex ]; 2165 m_aaaiCodedOffset[ uiViewIndex ][ 0 ][ uiBaseViewIndex ] = aaiOffset[ uiBaseViewIndex ][ uiViewIndex ]; 2166 m_aaaiCodedOffset[ uiViewIndex ][ 1 ][ uiBaseViewIndex ] = aaiOffset[ uiViewIndex ][ uiBaseViewIndex ]; 2167 } 2168 } 2169 } 2170 #endif // CAM_HLS_F0136_F0045_F0082 2171 2068 2172 #endif // H_3D 2069 2173 … … 2444 2548 , m_ppsInferScalingListFlag(false) 2445 2549 , m_ppsScalingListRefLayerId(0) 2550 #if DLT_DIFF_CODING_IN_PPS 2551 , m_pcDLT(NULL) 2552 #endif 2446 2553 #endif 2447 2554 { … … 2463 2570 delete m_scalingList; 2464 2571 } 2572 2573 #if DLT_DIFF_CODING_IN_PPS 2574 TComDLT::TComDLT() 2575 : m_bDltPresentFlag(false) 2576 , m_iNumDepthViews(0) 2577 , m_uiDepthViewBitDepth(8) 2578 { 2579 m_uiDepthViewBitDepth = g_bitDepthY; 2580 2581 for( Int i = 0; i < MAX_NUM_LAYERS; i++ ) 2582 { 2583 m_bUseDLTFlag [i] = false; 2584 m_bInterViewDltPredEnableFlag [i] = false; 2585 2586 // allocate some memory and initialize with default mapping 2587 m_iNumDepthmapValues[i] = ((1 << m_uiDepthViewBitDepth)-1)+1; 2588 m_iBitsPerDepthValue[i] = numBitsForValue(m_iNumDepthmapValues[i]); 2589 2590 m_iDepthValue2Idx[i] = (Int*) xMalloc(Int, m_iNumDepthmapValues[i]); 2591 m_iIdx2DepthValue[i] = (Int*) xMalloc(Int, m_iNumDepthmapValues[i]); 2592 2593 //default mapping 2594 for (Int d=0; d<m_iNumDepthmapValues[i]; d++) 2595 { 2596 m_iDepthValue2Idx[i][d] = d; 2597 m_iIdx2DepthValue[i][d] = d; 2598 } 2599 } 2600 } 2601 2602 TComDLT::~TComDLT() 2603 { 2604 for( Int i = 0; i < MAX_NUM_LAYERS; i++ ) 2605 { 2606 if ( m_iDepthValue2Idx[i] != NULL ) 2607 { 2608 xFree( m_iDepthValue2Idx[i] ); 2609 m_iDepthValue2Idx[i] = NULL; 2610 } 2611 2612 if ( m_iIdx2DepthValue[i] != NULL ) 2613 { 2614 xFree( m_iIdx2DepthValue[i] ); 2615 m_iIdx2DepthValue[i] = NULL; 2616 } 2617 } 2618 } 2619 2620 Void TComDLT::setDepthLUTs(Int layerIdInVps, Int* idxToDepthValueTable, Int iNumDepthValues) 2621 { 2622 if( idxToDepthValueTable == NULL || iNumDepthValues == 0 ) // default mapping only 2623 return; 2624 2625 // copy idx2DepthValue to internal array 2626 memcpy(m_iIdx2DepthValue[layerIdInVps], idxToDepthValueTable, iNumDepthValues*sizeof(UInt)); 2627 2628 UInt uiMaxDepthValue = ((1 << g_bitDepthY)-1); 2629 for(Int p=0; p<=uiMaxDepthValue; p++) 2630 { 2631 Int iIdxDown = 0; 2632 Int iIdxUp = iNumDepthValues-1; 2633 Bool bFound = false; 2634 2635 // iterate over indices to find lower closest depth 2636 Int i = 1; 2637 while(!bFound && i<iNumDepthValues) 2638 { 2639 if( m_iIdx2DepthValue[layerIdInVps][i] > p ) 2640 { 2641 iIdxDown = i-1; 2642 bFound = true; 2643 } 2644 2645 i++; 2646 } 2647 // iterate over indices to find upper closest depth 2648 i = iNumDepthValues-2; 2649 bFound = false; 2650 while(!bFound && i>=0) 2651 { 2652 if( m_iIdx2DepthValue[layerIdInVps][i] < p ) 2653 { 2654 iIdxUp = i+1; 2655 bFound = true; 2656 } 2657 2658 i--; 2659 } 2660 2661 // assert monotony 2662 assert(iIdxDown<=iIdxUp); 2663 2664 // assign closer depth value/idx 2665 if( abs(p-m_iIdx2DepthValue[layerIdInVps][iIdxDown]) < abs(p-m_iIdx2DepthValue[layerIdInVps][iIdxUp]) ) 2666 { 2667 m_iDepthValue2Idx[layerIdInVps][p] = iIdxDown; 2668 } 2669 else 2670 { 2671 m_iDepthValue2Idx[layerIdInVps][p] = iIdxUp; 2672 } 2673 2674 } 2675 2676 // update DLT variables 2677 m_iNumDepthmapValues[layerIdInVps] = iNumDepthValues; 2678 m_iBitsPerDepthValue[layerIdInVps] = numBitsForValue(m_iNumDepthmapValues[layerIdInVps]); 2679 } 2680 2681 #if H_3D_DELTA_DLT 2682 Void TComDLT::getDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTOut, UInt *puiDeltaDLTOutNum ) 2683 { 2684 Bool abBM0[ 256 ]; 2685 Bool abBM1[ 256 ]; 2686 2687 memset( abBM0, 0, sizeof( abBM0 )); 2688 memset( abBM1, 0, sizeof( abBM1 )); 2689 2690 // convert reference DLT to bit string 2691 for( Int i = 0; i < uiDLTInRefNum; i++ ) 2692 { 2693 abBM0[ piDLTInRef[ i ] ] = true; 2694 } 2695 // convert internal DLT to bit string 2696 for( Int i = 0; i < m_iNumDepthmapValues[ layerIdInVps ]; i++ ) 2697 { 2698 abBM1[ m_iIdx2DepthValue[ layerIdInVps ][ i ] ] = true; 2699 } 2700 2701 *puiDeltaDLTOutNum = 0; 2702 for( Int i = 0; i < 256; i++ ) 2703 { 2704 if( abBM0[ i ] ^ abBM1[ i ] ) 2705 { 2706 piDeltaDLTOut[ *puiDeltaDLTOutNum ] = i; 2707 *puiDeltaDLTOutNum = *puiDeltaDLTOutNum + 1; 2708 } 2709 } 2710 } 2711 2712 Void TComDLT::setDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTIn, UInt uiDeltaDLTInNum ) 2713 { 2714 Bool abBM0[ 256 ]; 2715 Bool abBM1[ 256 ]; 2716 2717 memset( abBM0, 0, sizeof( abBM0 )); 2718 memset( abBM1, 0, sizeof( abBM1 )); 2719 2720 // convert reference DLT to bit string 2721 for( Int i = 0; i < uiDLTInRefNum; i++ ) 2722 { 2723 abBM0[ piDLTInRef[ i ] ] = true; 2724 } 2725 // convert delta DLT to bit string 2726 for( Int i = 0; i < uiDeltaDLTInNum; i++ ) 2727 { 2728 abBM1[ piDeltaDLTIn[ i ] ] = true; 2729 } 2730 2731 Int aiIdx2DepthValue[256]; 2732 UInt uiNumDepthValues = 0; 2733 memset( aiIdx2DepthValue, 0, sizeof( aiIdx2DepthValue )); 2734 2735 for( Int i = 0; i < 256; i++ ) 2736 { 2737 if( abBM0[ i ] ^ abBM1[ i ] ) 2738 { 2739 aiIdx2DepthValue[ uiNumDepthValues++ ] = i; 2740 } 2741 } 2742 2743 // update internal tables 2744 setDepthLUTs(layerIdInVps, aiIdx2DepthValue, uiNumDepthValues); 2745 } 2746 #endif 2747 2748 #endif 2465 2749 2466 2750 #if H_MV … … 2525 2809 #endif 2526 2810 #if H_3D 2811 #if !CAM_HLS_F0136_F0045_F0082 2527 2812 Void 2528 2813 TComSPS::initCamParaSPS( UInt uiViewIndex, UInt uiCamParPrecision, Bool bCamParSlice, Int** aaiScale, Int** aaiOffset ) … … 2546 2831 } 2547 2832 } 2833 #endif 2548 2834 #endif 2549 2835 TComReferencePictureSet::TComReferencePictureSet() … … 3257 3543 assert( m_depthToDisparityF != NULL ); 3258 3544 3545 #if CAM_HLS_F0136_F0045_F0082 3546 TComVPS* vps = getVPS(); 3547 #else 3259 3548 TComSPS* sps = getSPS(); 3260 3549 #endif 3550 3551 #if CAM_HLS_F0136_F0045_F0082 3552 Int log2Div = g_bitDepthY - 1 + vps->getCamParPrecision(); 3553 Int viewIndex = getViewIndex(); 3554 3555 Bool camParaSH = vps->hasCamParInSliceHeader( viewIndex ); 3556 3557 Int* codScale = camParaSH ? m_aaiCodedScale [ 0 ] : vps->getCodedScale ( viewIndex ); 3558 Int* codOffset = camParaSH ? m_aaiCodedOffset[ 0 ] : vps->getCodedOffset ( viewIndex ); 3559 Int* invCodScale = camParaSH ? m_aaiCodedScale [ 1 ] : vps->getInvCodedScale ( viewIndex ); 3560 Int* invCodOffset = camParaSH ? m_aaiCodedOffset[ 1 ] : vps->getInvCodedOffset( viewIndex ); 3561 #else 3261 3562 Int log2Div = g_bitDepthY - 1 + sps->getCamParPrecision(); 3262 3563 … … 3267 3568 Int* invCodScale = camParaSH ? m_aaiCodedScale [ 1 ] : sps->getInvCodedScale (); 3268 3569 Int* invCodOffset = camParaSH ? m_aaiCodedOffset[ 1 ] : sps->getInvCodedOffset(); 3570 #endif 3269 3571 3270 3572 for (Int i = 0; i <= ( getViewIndex() - 1); i++) … … 3707 4009 // It is a requirement of bitstream conformance that bitstream partition with index j shall not include 3708 4010 // direct or indirect reference layers of any layers in bitstream partition i for any values of i and j 3709 // in the range of 0 to num_bitstream_partitions[ h ] 1, inclusive, such that i is less than j.4011 // in the range of 0 to num_bitstream_partitions[ h ] ?1, inclusive, such that i is less than j. 3710 4012 3711 4013 for ( Int partJ = 0; partJ < getNumBitstreamPartitions( h ); partJ++ ) -
TabularUnified trunk/source/Lib/TLibCommon/TComSlice.h ¶
r738 r758 849 849 #endif 850 850 Bool m_vpsDepthModesFlag [MAX_NUM_LAYERS ]; 851 851 852 #if H_3D_DIM_DLT 853 #if !DLT_DIFF_CODING_IN_PPS 852 854 Bool m_bUseDLTFlag [MAX_NUM_LAYERS ]; 853 855 … … 857 859 Int* m_iIdx2DepthValue [MAX_NUM_LAYERS ]; 858 860 #endif 861 #endif 862 859 863 #if H_3D 864 #if CAM_HLS_F0136_F0045_F0082 865 UInt m_uiCamParPrecision; 866 Bool* m_bCamParInSliceHeader; 867 Bool* m_bCamParPresent; 868 Int ***m_aaaiCodedScale ; 869 Int ***m_aaaiCodedOffset; 870 #endif 860 871 Bool m_ivMvScalingFlag; 861 872 #endif … … 1035 1046 #endif 1036 1047 1037 Void setProfileLevelTierIdx( Int outLayerSetIdx, Int val ) { m_profileLevelTierIdx[ outLayerSetIdx = val ]; } 1048 Void setProfileLevelTierIdx( Int outLayerSetIdx, Int val ) { m_profileLevelTierIdx[ outLayerSetIdx = val ]; } 1038 1049 Int getProfileLevelTierIdx( Int outLayerSetIdx ) { return m_profileLevelTierIdx[ outLayerSetIdx ]; } 1039 1050 #if H_MV_6_GEN_0153_28 … … 1139 1150 Void setARPStepNum( Int layerIdInVps, UInt val ) { m_uiARPStepNum[layerIdInVps] = val; } 1140 1151 #endif 1152 #if CAM_HLS_F0136_F0045_F0082 1153 Void createCamPars(Int iNumViews); 1154 Void deleteCamPars(); 1155 Void initCamParaVPS ( UInt uiViewIndex, Bool bCamParPresent = false, UInt uiCamParPrecision = 0, Bool bCamParSlice = false, Int** aaiScale = 0, Int** aaiOffset = 0 ); 1156 UInt getCamParPrecision () { return m_uiCamParPrecision; } 1157 Bool getCamParPresent ( Int viewIndex ) { return m_bCamParPresent[viewIndex]; } 1158 Bool hasCamParInSliceHeader( Int viewIndex ) { return m_bCamParInSliceHeader[viewIndex]; } 1159 Void setHasCamParInSliceHeader( Int viewIndex, Bool b ) { m_bCamParInSliceHeader[viewIndex] = b; } 1160 Int* getCodedScale ( Int viewIndex ) { return m_aaaiCodedScale [viewIndex][0]; } 1161 Int* getCodedOffset ( Int viewIndex ) { return m_aaaiCodedOffset[viewIndex][0]; } 1162 Int* getInvCodedScale ( Int viewIndex ) { return m_aaaiCodedScale [viewIndex][1]; } 1163 Int* getInvCodedOffset ( Int viewIndex ) { return m_aaaiCodedOffset[viewIndex][1]; } 1164 #endif 1165 1141 1166 #if H_3D_IV_MERGE 1142 1167 Void setIvMvPredFlag ( Int layerIdInVps, Bool val ) { m_ivMvPredFlag[ layerIdInVps ] = val; } … … 1157 1182 Void setVpsDepthModesFlag( Int layerIdInVps, Bool val ) { m_vpsDepthModesFlag[ layerIdInVps ] = val; } 1158 1183 Bool getVpsDepthModesFlag( Int layerIdInVps ) { return m_vpsDepthModesFlag[ layerIdInVps ]; } 1184 1159 1185 #if H_3D_DIM_DLT 1186 #if !DLT_DIFF_CODING_IN_PPS 1160 1187 Bool getUseDLTFlag ( Int layerIdInVps ) { return m_bUseDLTFlag[ layerIdInVps ]; } 1161 1188 Void setUseDLTFlag ( Int layerIdInVps, Bool b ) { m_bUseDLTFlag[ layerIdInVps ] = b; } … … 1167 1194 Void setDepthLUTs( Int layerIdInVps, Int* idx2DepthValue = NULL, Int iNumDepthValues = 0 ); 1168 1195 #endif 1196 #endif 1169 1197 1170 1198 Bool getIvMvScalingFlag ( ) { return m_ivMvScalingFlag; } … … 1181 1209 #endif 1182 1210 }; 1211 1212 #if DLT_DIFF_CODING_IN_PPS 1213 class TComDLT 1214 { 1215 private: 1216 Bool m_bDltPresentFlag; 1217 Bool m_bUseDLTFlag [ MAX_NUM_LAYERS ]; 1218 Bool m_bInterViewDltPredEnableFlag[ MAX_NUM_LAYERS ]; 1219 1220 Int m_iBitsPerDepthValue [ MAX_NUM_LAYERS ]; 1221 Int m_iNumDepthmapValues [ MAX_NUM_LAYERS ]; 1222 Int* m_iDepthValue2Idx [ MAX_NUM_LAYERS ]; 1223 Int* m_iIdx2DepthValue [ MAX_NUM_LAYERS ]; 1224 1225 Int m_iNumDepthViews; 1226 UInt m_uiDepthViewBitDepth; 1227 1228 public: 1229 TComDLT(); 1230 ~TComDLT(); 1231 1232 Bool getDltPresentFlag () { return m_bDltPresentFlag; } 1233 Void setDltPresentFlag ( Bool b ) { m_bDltPresentFlag = b; } 1234 1235 Bool getUseDLTFlag ( Int layerIdInVps ) { return m_bUseDLTFlag[ layerIdInVps ]; } 1236 Void setUseDLTFlag ( Int layerIdInVps, Bool b ) { m_bUseDLTFlag[ layerIdInVps ] = b; } 1237 1238 Bool getInterViewDltPredEnableFlag( Int layerIdInVps ) { return m_bInterViewDltPredEnableFlag[ layerIdInVps ]; } 1239 Void setInterViewDltPredEnableFlag( Int layerIdInVps, Bool b ) { m_bInterViewDltPredEnableFlag[ layerIdInVps ] = b; } 1240 1241 Void setNumDepthViews ( Int n ) { m_iNumDepthViews = n; } 1242 Int getNumDepthViews () { return m_iNumDepthViews; } 1243 1244 Void setDepthViewBitDepth( UInt n ) { m_uiDepthViewBitDepth = n; } 1245 UInt getDepthViewBitDepth() { return m_uiDepthViewBitDepth; } 1246 1247 Int getBitsPerDepthValue( Int layerIdInVps ) { return getUseDLTFlag(layerIdInVps)?m_iBitsPerDepthValue[layerIdInVps]:g_bitDepthY; } 1248 Int getNumDepthValues( Int layerIdInVps ) { return getUseDLTFlag(layerIdInVps)?m_iNumDepthmapValues[layerIdInVps]:((1 << g_bitDepthY)-1); } 1249 Int depthValue2idx( Int layerIdInVps, Pel value ) { return getUseDLTFlag(layerIdInVps)?m_iDepthValue2Idx[layerIdInVps][value]:value; } 1250 Pel idx2DepthValue( Int layerIdInVps, UInt uiIdx ) { return getUseDLTFlag(layerIdInVps)?m_iIdx2DepthValue[layerIdInVps][uiIdx]:uiIdx; } 1251 Void setDepthLUTs( Int layerIdInVps, Int* idx2DepthValue = NULL, Int iNumDepthValues = 0 ); 1252 #if H_3D_DELTA_DLT 1253 Int* idx2DepthValue( Int layerIdInVps ) { return m_iIdx2DepthValue[layerIdInVps]; } 1254 Void getDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTOut, UInt *puiDeltaDLTOutNum ); 1255 Void setDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTIn, UInt uiDeltaDLTInNum ); 1256 #endif 1257 }; 1258 #endif 1183 1259 1184 1260 class Window … … 1725 1801 #endif 1726 1802 #if H_3D 1803 #if !CAM_HLS_F0136_F0045_F0082 1727 1804 Void initCamParaSPS ( UInt uiViewIndex, UInt uiCamParPrecision = 0, Bool bCamParSlice = false, Int** aaiScale = 0, Int** aaiOffset = 0 ); 1728 1805 UInt getCamParPrecision () { return m_uiCamParPrecision; } … … 1735 1812 Int* getInvCodedScale () { return m_aaiCodedScale [1]; } 1736 1813 Int* getInvCodedOffset () { return m_aaiCodedOffset[1]; } 1814 #endif 1737 1815 #endif 1738 1816 #if H_MV … … 1840 1918 Int m_ppsScalingListRefLayerId; 1841 1919 #endif 1920 1921 #if DLT_DIFF_CODING_IN_PPS 1922 TComDLT* m_pcDLT; 1923 #endif 1924 1842 1925 public: 1843 1926 TComPPS(); … … 1864 1947 Void setMinCuDQPSize ( UInt u ) { m_uiMinCuDQPSize = u; } 1865 1948 UInt getMinCuDQPSize () { return m_uiMinCuDQPSize; } 1949 1950 #if DLT_DIFF_CODING_IN_PPS 1951 Void setDLT ( TComDLT* pcDLT ) { m_pcDLT = pcDLT; } 1952 TComDLT* getDLT () { return m_pcDLT; } 1953 #endif 1866 1954 1867 1955 Void setChromaCbQpOffset( Int i ) { m_chromaCbQpOffset = i; } -
TabularUnified trunk/source/Lib/TLibCommon/TypeDef.h ¶
r738 r758 175 175 #endif 176 176 177 #define CAM_HLS_F0136_F0045_F0082 1 // JCT3V-F0136/F0045: view order index based camera parameter signaling 178 // JCT3V-F0082: the cp_in_slice_segment_layer_flag to be view specific and used as a condition of the presence of slice header level camera parameters 179 #define CAM_HLS_F0044 1 // JCT3V-F0044: move camera parameter from slice header extension to slice header 180 181 177 182 // Rate Control 178 183 #define KWU_FIX_URQ 1 … … 215 220 #define H_3D_DIM_SDC 1 // Simplified Depth Coding method 216 221 #define H_3D_DIM_DLT 1 // Depth Lookup Table 222 223 #if H_3D_DIM_DLT 224 #define DLT_DIFF_CODING_IN_PPS 1 // moving DLT syntax elements from VPS to PPS and differential coding of DLT values 225 // JCT3V-F0131, JCT3V-F0139 226 #if DLT_DIFF_CODING_IN_PPS 227 #define Log2( n ) ( log((double)n) / log(2.0) ) 228 #endif 229 #define H_3D_DELTA_DLT 1 230 #endif 231 217 232 #define H_3D_DIM_ENC 1 // Depth Intra encoder optimizations, includes: 218 233 // HHI_DEPTH_INTRA_SEARCH_RAU_C0160 … … 262 277 #define H_MV_FIX_SKIP_PICTURES 1 // Fix related to skipping pictures. 263 278 #define H_MV_6_HRD_O0164_15 1 // (HRD/O0164/Multilayer HRD) #15 Decision: Adopt, modified as follows: It was suggested to constrain the stalling based on the relative cpb removal times, which must be in decoding order. The "du_based_bpb_sync_flag" is not needed, in view of this. SEI in the highest layer of the layer set or (inclusive "or") VPS VUI is used to carry the parameters (at encoder discretion). SEI in higher layer and SEI in VUI do not need to repeat information available in some lower layer. Shall be after APS SEI and buffering period SEI and before all other SEI of all layers except other HRD related SEI. 264 #define H_MV_6_HRD_O0217_13 1 // (HRD/O0217/Sub-DPB based DPB operations) #13 Decision: Adopt Specify a separate DPB capacity for each layer no sharing of capacity across layers each layer has its own parameters (max pictures, max latency, max reordering). This proposal would specify distinct parameters for each "output layer set" and to change the definition of an operation point to be specific to an output layer set instead of a 'layer set". Decision: Adopted this aspect as well.279 #define H_MV_6_HRD_O0217_13 1 // (HRD/O0217/Sub-DPB based DPB operations) #13 Decision: Adopt ?Specify a separate DPB capacity for each layer ?no sharing of capacity across layers ?each layer has its own parameters (max pictures, max latency, max reordering). This proposal would specify distinct parameters for each "output layer set" and to change the definition of an operation point to be specific to an output layer set instead of a 'layer set". Decision: Adopted this aspect as well. 265 280 #define H_MV_6_SHVC_O0098_36 1 // (SHVC/O0098/Scaled ref layer offset) #36 Modify signalling of scaled reference layer offsets to allow signalling of any lower layer, rather than just a direct reference layer, in order to enable alignment of auxiliary pictures. In further JCT-VC and JCT-3V discussion, it was also agreed to use the same offset signalling for MV-HEVC as well as SHVC 266 281 #define H_MV_6_GEN_0153_28 1 //(Gen/O0153/output highest layer) #28 Add a flag in the VPS to indicate if startup process should output the highest available layer if the target output layer is not available. … … 291 306 #define H_MV_6_PS_O0096_21 1 // (PS/O0096/direct_dependency_type gating flag) #21 Add a gating flag in VPS extension to condition the presence of direct dependency type, with a default type signalled, from JCTVC-O0096 292 307 #define H_MV_6_PS_O0109_22 1 // (PS/O0109/view_id_len) #22 Modify the VPS extension syntax and semantics to replace view_id_len_minus1 with view_id_len, always signal that syntax element, add a constraint that (1<<view_id_len) >= NumViews, and modify view_id_val semantics to infer value of 0 when not present, from discussion of JCTVC-O0109 293 #define H_MV_6_PS_O0109_23 1 // (PS/O0109/profile_ref_minus1 constraint) #23 Modify the semantics of profile_ref_minus1[ i ] to replace shall be less than i with shall be less than or equal to i,from discussion of JCTVC-O0109308 #define H_MV_6_PS_O0109_23 1 // (PS/O0109/profile_ref_minus1 constraint) #23 Modify the semantics of profile_ref_minus1[ i ] to replace shall be less than i?with shall be less than or equal to i? from discussion of JCTVC-O0109 294 309 #define H_MV_6_PS_O0109_24 1 // (PS/O0109/vps_vui_present_flag move) #24 Move the vps_vui_present_flag to precede vps_vui_offset, and make vps_vui_offset conditional on that flag, from JCTVC-O0109 295 310 /////////////////////////////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.