Changeset 782 in 3DVCSoftware for branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder
- Timestamp:
- 20 Jan 2014, 05:01:03 (11 years ago)
- Location:
- branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder/TEncCavlc.cpp
r773 r782 2513 2513 2514 2514 #if H_3D_INTER_SDC 2515 #if QC_SDC_UNIFY_G0130 2516 Void TEncCavlc::codeDeltaDC( TComDataCU* pcCU, UInt uiAbsPartIdx ) 2517 { 2518 assert(0); 2519 } 2520 2521 Void TEncCavlc::codeSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) 2522 { 2523 assert(0); 2524 } 2525 #else 2515 2526 Void TEncCavlc::codeInterSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) 2516 2527 { … … 2523 2534 } 2524 2535 #endif 2536 #endif 2525 2537 //! \} -
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder/TEncCavlc.h
r773 r782 138 138 #endif 139 139 #if H_3D_INTER_SDC 140 #if QC_SDC_UNIFY_G0130 141 Void codeDeltaDC ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 142 Void codeSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 143 #else 140 144 Void codeInterSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 141 145 Void codeInterSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment ); 146 #endif 142 147 #endif 143 148 -
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder/TEncCu.cpp
r773 r782 1588 1588 1589 1589 m_pcEntropyCoder->encodePartSize( pcCU, uiAbsPartIdx, uiDepth ); 1590 1590 #if QC_SDC_UNIFY_G0130 1591 m_pcEntropyCoder->encodeSDCFlag( pcCU, uiAbsPartIdx, false ); 1592 #endif 1591 1593 if (pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) 1592 1594 { … … 1609 1611 m_pcEntropyCoder->encodeARPW( pcCU , uiAbsPartIdx ); 1610 1612 #endif 1611 #if H_3D_INTER_SDC 1613 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 1612 1614 m_pcEntropyCoder->encodeInterSDCFlag( pcCU, uiAbsPartIdx, false ); 1613 1615 #endif … … 2285 2287 m_pcEntropyCoder->encodePredMode( rpcTempCU, 0, true ); 2286 2288 m_pcEntropyCoder->encodePartSize( rpcTempCU, 0, uiDepth, true ); 2289 #if QC_SDC_UNIFY_G0130 2290 m_pcEntropyCoder->encodeSDCFlag( rpcTempCU, 0, true ); 2291 #endif 2287 2292 m_pcEntropyCoder->encodePredInfo( rpcTempCU, 0, true ); 2288 2293 m_pcEntropyCoder->encodeIPCMInfo(rpcTempCU, 0, true ); … … 2374 2379 m_pcEntropyCoder->encodePredMode ( rpcTempCU, 0, true ); 2375 2380 m_pcEntropyCoder->encodePartSize ( rpcTempCU, 0, uiDepth, true ); 2381 #if QC_SDC_UNIFY_G0130 2382 m_pcEntropyCoder->encodeSDCFlag( rpcTempCU, 0, true ); 2383 #endif 2376 2384 m_pcEntropyCoder->encodeIPCMInfo ( rpcTempCU, 0, true ); 2377 2385 -
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder/TEncEntropy.cpp
r773 r782 649 649 UInt uiLumaOffset = uiMinCoeffSize*uiAbsPartIdx; 650 650 UInt uiChromaOffset = uiLumaOffset>>2; 651 651 #if QC_SDC_UNIFY_G0130 652 652 #if H_3D_DIM_SDC 653 if( pcCU->getSDCFlag( uiAbsPartIdx ) )653 if( pcCU->getSDCFlag( uiAbsPartIdx ) && pcCU->isIntra( uiAbsPartIdx ) ) 654 654 { 655 655 assert( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2Nx2N ); … … 658 658 assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_U) == 1 ); 659 659 assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 ); 660 return;661 660 } 662 661 #endif 663 662 664 663 #if H_3D_INTER_SDC 665 if( pcCU->get InterSDCFlag( uiAbsPartIdx ) )664 if( pcCU->getSDCFlag( uiAbsPartIdx ) && !pcCU->isIntra( uiAbsPartIdx ) ) 666 665 { 667 666 assert( !pcCU->isSkipped( uiAbsPartIdx ) ); 668 667 assert( !pcCU->isIntra( uiAbsPartIdx) ); 669 668 assert( pcCU->getSlice()->getIsDepth() ); 669 } 670 #endif 671 672 if( pcCU->getSDCFlag( uiAbsPartIdx ) || pcCU->isIntra( uiAbsPartIdx ) ) 673 { 674 Int iPartNum = ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) ? 4 : 1; 675 UInt uiPartOffset = ( pcCU->getPic()->getNumPartInCU() >> ( pcCU->getDepth( uiAbsPartIdx ) << 1 ) ) >> 2; 676 677 if( !pcCU->getSDCFlag( uiAbsPartIdx ) ) 678 { 679 for( Int iPart = 0; iPart < iPartNum; iPart++ ) 680 { 681 if( getDimType( pcCU->getLumaIntraDir( uiAbsPartIdx + uiPartOffset*iPart ) ) < DIM_NUM_TYPE ) 682 { 683 m_pcEntropyCoderIf->codeDeltaDC( pcCU, uiAbsPartIdx + uiPartOffset*iPart ); 684 } 685 } 686 } 687 else 688 { 689 m_pcEntropyCoderIf->codeDeltaDC( pcCU, uiAbsPartIdx ); 690 return; 691 } 692 } 693 #else 694 #if H_3D_DIM_SDC 695 if( pcCU->getSDCFlag( uiAbsPartIdx ) ) 696 { 697 assert( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2Nx2N ); 698 assert( pcCU->getTransformIdx(uiAbsPartIdx) == 0 ); 699 assert( pcCU->getCbf(uiAbsPartIdx, TEXT_LUMA) == 1 ); 700 assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_U) == 1 ); 701 assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 ); 702 return; 703 } 704 #endif 705 706 #if H_3D_INTER_SDC 707 if( pcCU->getInterSDCFlag( uiAbsPartIdx ) ) 708 { 709 assert( !pcCU->isSkipped( uiAbsPartIdx ) ); 710 assert( !pcCU->isIntra( uiAbsPartIdx) ); 711 assert( pcCU->getSlice()->getIsDepth() ); 670 712 671 713 encodeInterSDCResidualData( pcCU, uiAbsPartIdx, false ); 672 714 return; 673 715 } 716 #endif 674 717 #endif 675 718 … … 825 868 826 869 #if H_3D_INTER_SDC 870 #if QC_SDC_UNIFY_G0130 871 Void TEncEntropy::encodeDeltaDC ( TComDataCU* pcCU, UInt absPartIdx ) 872 { 873 m_pcEntropyCoderIf->codeDeltaDC( pcCU, absPartIdx ); 874 } 875 876 Void TEncEntropy::encodeSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ) 877 { 878 if( ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getVPS()->getInterSDCFlag( pcCU->getSlice()->getLayerIdInVps() ) ) || 879 ( pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getVPS()->getVpsDepthModesFlag( pcCU->getSlice()->getLayerIdInVps() ) ) ) 880 { 881 return; 882 } 883 884 if( !pcCU->getSlice()->getIsDepth() || ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_2Nx2N ) || pcCU->isSkipped( uiAbsPartIdx ) ) 885 { 886 return; 887 } 888 889 assert( ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) || ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->isSkipped( uiAbsPartIdx ) ) ); 890 891 if( bRD ) 892 { 893 uiAbsPartIdx = 0; 894 } 895 896 m_pcEntropyCoderIf->codeSDCFlag( pcCU, uiAbsPartIdx ); 897 } 898 #else 827 899 Void TEncEntropy::encodeInterSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ) 828 900 { … … 872 944 } 873 945 #endif 946 #endif 874 947 875 948 //! \} -
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder/TEncEntropy.h
r655 r782 95 95 #endif 96 96 #if H_3D_INTER_SDC 97 #if QC_SDC_UNIFY_G0130 98 virtual Void codeDeltaDC ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 99 virtual Void codeSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 100 #else 97 101 virtual Void codeInterSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 98 102 virtual Void codeInterSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment ) = 0; 103 #endif 99 104 #endif 100 105 virtual Void codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; … … 186 191 #endif 187 192 #if H_3D_INTER_SDC 193 #if QC_SDC_UNIFY_G0130 194 Void encodeDeltaDC ( TComDataCU* pcCU, UInt absPartIdx ); 195 Void encodeSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 196 #else 188 197 Void encodeInterSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 189 198 Void encodeInterSDCResidualData( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ); 199 #endif 190 200 #endif 191 201 Void encodePredMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); -
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSbac.cpp
r781 r782 95 95 #if QC_GENERIC_SDC_G0122 96 96 , m_cAngleFlagSCModel ( 1, 1, NUM_ANGLE_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 97 #if !QC_SDC_UNIFY_G0130 97 98 , m_cIntraSdcFlagSCModel ( 1, 1, NUM_INTRASDC_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 99 #endif 98 100 #endif 99 101 #if H_3D_DIM_DMM … … 105 107 #endif 106 108 #endif 107 #if H_3D_INTER_SDC 109 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 108 110 , m_cInterSDCFlagSCModel ( 1, 1, NUM_INTER_SDC_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 109 111 , m_cInterSDCResidualSCModel ( 1, 1, NUM_INTER_SDC_RESIDUAL_CTX , m_contextModels + m_numContextModels, m_numContextModels) 110 112 , m_cInterSDCResidualSignFlagSCModel ( 1, 1, NUM_INTER_SDC_SIGN_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 113 #endif 114 #if QC_SDC_UNIFY_G0130 115 , m_cSDCFlagSCModel ( 1, 1, NUM_SDC_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 111 116 #endif 112 117 { … … 174 179 #if QC_GENERIC_SDC_G0122 175 180 m_cAngleFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG ); 181 #if !QC_SDC_UNIFY_G0130 176 182 m_cIntraSdcFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTRASDC_FLAG ); 183 #endif 177 184 #endif 178 185 #if H_3D_DIM_DMM … … 184 191 #endif 185 192 #endif 186 #if H_3D_INTER_SDC 193 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 187 194 m_cInterSDCFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTER_SDC_FLAG ); 188 195 m_cInterSDCResidualSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTER_SDC_RESIDUAL ); 189 196 m_cInterSDCResidualSignFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTER_SDC_SIGN_FLAG ); 197 #endif 198 #if QC_SDC_UNIFY_G0130 199 m_cSDCFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG ); 190 200 #endif 191 201 // new structure … … 226 236 curCost += m_cCUICFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_IC_FLAG ); 227 237 #endif 228 #if H_3D_INTER_SDC 238 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 229 239 curCost += m_cInterSDCFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_INTER_SDC_FLAG ); 230 240 curCost += m_cInterSDCResidualSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_INTER_SDC_RESIDUAL ); 231 241 curCost += m_cInterSDCResidualSignFlagSCModel.calcCost( curSliceType, qp, (UChar*)INIT_INTER_SDC_SIGN_FLAG ); 242 #endif 243 #if QC_SDC_UNIFY_G0130 244 curCost += m_cSDCFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SDC_FLAG ); 232 245 #endif 233 246 curCost += m_cCUPartSizeSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_PART_SIZE ); … … 262 275 #if QC_GENERIC_SDC_G0122 263 276 curCost += m_cAngleFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_ANGLE_FLAG ); 277 #if !QC_SDC_UNIFY_G0130 264 278 curCost += m_cIntraSdcFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_INTRASDC_FLAG ); 279 #endif 265 280 #endif 266 281 #if H_3D_DIM_DMM … … 331 346 #if QC_GENERIC_SDC_G0122 332 347 m_cAngleFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG ); 348 #if !QC_SDC_UNIFY_G0130 333 349 m_cIntraSdcFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTRASDC_FLAG ); 350 #endif 334 351 #endif 335 352 #if H_3D_DIM_DMM … … 341 358 #endif 342 359 #endif 343 #if H_3D_INTER_SDC 360 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 344 361 m_cInterSDCFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTER_SDC_FLAG ); 345 362 m_cInterSDCResidualSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTER_SDC_RESIDUAL ); 346 363 m_cInterSDCResidualSignFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTER_SDC_SIGN_FLAG ); 364 #endif 365 #if QC_SDC_UNIFY_G0130 366 m_cSDCFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG ); 347 367 #endif 348 368 m_pcBinIf->start(); … … 647 667 #if QC_GENERIC_SDC_G0122 648 668 this->m_cAngleFlagSCModel .copyFrom( &pSrc->m_cAngleFlagSCModel ); 669 #if !QC_SDC_UNIFY_G0130 649 670 this->m_cIntraSdcFlagSCModel .copyFrom( &pSrc->m_cIntraSdcFlagSCModel ); 671 #endif 650 672 #endif 651 673 } … … 1169 1191 default: break; 1170 1192 } 1171 1193 #if !QC_SDC_UNIFY_G0130 1172 1194 if( dimType < DIM_NUM_TYPE || pcCU->getSDCFlag( absPartIdx ) ) 1173 1195 { … … 1206 1228 } 1207 1229 } 1230 #endif 1208 1231 } 1209 1232 … … 1217 1240 m_pcBinIf->encodeBin( isDimMode( dir ) ? 0 : 1, m_cAngleFlagSCModel.get( 0, 0, pcCU->getCtxAngleFlag( absPartIdx ) ) ); 1218 1241 } 1219 1242 #if !QC_SDC_UNIFY_G0130 1220 1243 if( pcCU->getPartitionSize( absPartIdx ) == SIZE_2Nx2N ) //SDC is allowed only in this case 1221 1244 { 1222 1245 m_pcBinIf->encodeBin( pcCU->getSDCFlag( absPartIdx ) ? 1 : 0, m_cIntraSdcFlagSCModel.get( 0, 0, pcCU->getCtxSDCFlag( absPartIdx ) ) ); 1223 1246 } 1224 1247 #endif 1225 1248 if( isDimMode( dir ) ) 1226 1249 { … … 2200 2223 2201 2224 #if H_3D_INTER_SDC 2225 #if QC_SDC_UNIFY_G0130 2226 Void TEncSbac::codeDeltaDC( TComDataCU* pcCU, UInt absPartIdx ) 2227 { 2228 if( !( pcCU->getSDCFlag( absPartIdx ) || ( pcCU->isIntra( absPartIdx ) && getDimType( pcCU->getLumaIntraDir( absPartIdx ) ) < DIM_NUM_TYPE ) ) ) 2229 { 2230 assert( 0 ); 2231 } 2232 2233 UInt uiNumSegments = 0; 2234 UInt dimDeltaDC = 0; 2235 2236 if( pcCU->isIntra( absPartIdx ) ) 2237 { 2238 UInt dir = pcCU->getLumaIntraDir( absPartIdx ); 2239 uiNumSegments = isDimMode( dir ) ? 2 : 1; 2240 2241 if( pcCU->getSDCFlag( absPartIdx ) ) 2242 { 2243 if( uiNumSegments == 1 ) 2244 { 2245 dimDeltaDC = pcCU->getSDCSegmentDCOffset( 0, absPartIdx ) ? 1 : 0; 2246 } 2247 else 2248 { 2249 dimDeltaDC = ( pcCU->getSDCSegmentDCOffset( 0, absPartIdx ) || pcCU->getSDCSegmentDCOffset( 1, absPartIdx ) ) ? 1 : 0; 2250 } 2251 } 2252 else 2253 { 2254 dimDeltaDC = isDimDeltaDC( dir ); 2255 } 2256 2257 m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get( 0, 0, uiNumSegments-1 ) ); 2258 } 2259 else //all-zero inter SDC is not allowed 2260 { 2261 PartSize cPartSize = pcCU->getPartitionSize( absPartIdx ); 2262 2263 uiNumSegments = ( cPartSize == SIZE_2Nx2N ) ? 1 : ( cPartSize == SIZE_NxN ? 4 : 2 ); 2264 dimDeltaDC = 1; 2265 } 2266 2267 if( dimDeltaDC ) 2268 { 2269 for( UInt segment = 0; segment < uiNumSegments; segment++ ) 2270 { 2271 Pel deltaDC = 0; 2272 2273 if( pcCU->isIntra( absPartIdx ) ) 2274 { 2275 UInt dir = pcCU->getLumaIntraDir( absPartIdx ); 2276 deltaDC = pcCU->getSDCFlag( absPartIdx ) ? pcCU->getSDCSegmentDCOffset( segment, absPartIdx ) : pcCU->getDimDeltaDC( getDimType( dir ), segment, absPartIdx ); 2277 } 2278 else 2279 { 2280 deltaDC = pcCU->getSDCSegmentDCOffset( segment, absPartIdx ); 2281 } 2282 2283 xCodeDimDeltaDC( deltaDC, uiNumSegments ); 2284 } 2285 } 2286 } 2287 2288 Void TEncSbac::codeSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) 2289 { 2290 UInt uiSymbol = pcCU->getSDCFlag( uiAbsPartIdx ) ? 1 : 0; 2291 UInt uiCtxSDCFlag = pcCU->getCtxSDCFlag( uiAbsPartIdx ); 2292 2293 m_pcBinIf->encodeBin( uiSymbol, m_cSDCFlagSCModel.get( 0, 0, uiCtxSDCFlag ) ); 2294 } 2295 #else 2202 2296 Void TEncSbac::codeInterSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) 2203 2297 { … … 2221 2315 } 2222 2316 #endif 2317 #endif 2223 2318 //! \} -
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSbac.h
r781 r782 154 154 #endif 155 155 #if H_3D_INTER_SDC 156 #if QC_SDC_UNIFY_G0130 157 Void codeDeltaDC ( TComDataCU* pcCU, UInt absPartIdx ); 158 Void codeSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 159 #else 156 160 Void codeInterSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 157 161 Void codeInterSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment ); 162 #endif 158 163 #endif 159 164 Void codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); … … 249 254 #if QC_GENERIC_SDC_G0122 250 255 ContextModel3DBuffer m_cAngleFlagSCModel; 256 #if !QC_SDC_UNIFY_G0130 251 257 ContextModel3DBuffer m_cIntraSdcFlagSCModel; 258 #endif 252 259 #endif 253 260 #if H_3D_DIM_DMM … … 259 266 #endif 260 267 #endif 261 #if H_3D_INTER_SDC 268 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 262 269 ContextModel3DBuffer m_cInterSDCFlagSCModel; 263 270 ContextModel3DBuffer m_cInterSDCResidualSCModel; 264 271 ContextModel3DBuffer m_cInterSDCResidualSignFlagSCModel; 265 272 #endif 273 #if QC_SDC_UNIFY_G0130 274 ContextModel3DBuffer m_cSDCFlagSCModel; 275 #endif 266 276 }; 267 277 -
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSearch.cpp
r781 r782 921 921 922 922 m_pcEntropyCoder ->encodePartSize( pcCU, 0, pcCU->getDepth(0), true ); 923 923 #if QC_SDC_UNIFY_G0130 924 m_pcEntropyCoder->encodeSDCFlag( pcCU, 0, true ); 925 #endif 924 926 if (pcCU->isIntra(0) && pcCU->getPartitionSize(0) == SIZE_2Nx2N ) 925 927 { … … 956 958 } 957 959 } 960 #if QC_SDC_UNIFY_G0130 961 Int iPartNum = ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) ? 4 : 1; 962 UInt uiPartOffset = ( pcCU->getPic()->getNumPartInCU() >> ( pcCU->getDepth( uiAbsPartIdx ) << 1 ) ) >> 2; 963 964 if( !pcCU->getSDCFlag( uiAbsPartIdx ) ) 965 { 966 for( Int iPart = 0; iPart < iPartNum; iPart++ ) 967 { 968 if( getDimType( pcCU->getLumaIntraDir( uiAbsPartIdx + uiPartOffset*iPart ) ) < DIM_NUM_TYPE ) 969 { 970 m_pcEntropyCoder->encodeDeltaDC( pcCU, uiAbsPartIdx + uiPartOffset*iPart ); 971 } 972 } 973 } 974 #endif 958 975 } 959 976 if( bChroma ) … … 2047 2064 2048 2065 // encode reduced intra header 2066 #if QC_SDC_UNIFY_G0130 2067 if( !pcCU->getSlice()->isIntra() ) 2068 { 2069 if (pcCU->getSlice()->getPPS()->getTransquantBypassEnableFlag()) 2070 { 2071 m_pcEntropyCoder->encodeCUTransquantBypassFlag( pcCU, 0, true ); 2072 } 2073 m_pcEntropyCoder->encodeSkipFlag( pcCU, 0, true ); 2074 m_pcEntropyCoder->encodePredMode( pcCU, 0, true ); 2075 } 2076 2077 m_pcEntropyCoder->encodePartSize( pcCU, 0, true ); 2078 m_pcEntropyCoder->encodeSDCFlag( pcCU, 0, true ); 2079 #else 2049 2080 m_pcEntropyCoder->encodePredMode( pcCU, 0, true ); 2081 #endif 2050 2082 2051 2083 // encode pred direction + DC residual data 2052 2084 m_pcEntropyCoder->encodePredInfo( pcCU, 0, true ); 2085 #if QC_SDC_UNIFY_G0130 2086 Bool bDummy = false; 2087 m_pcEntropyCoder->encodeCoeff( pcCU, 0, pcCU->getDepth( 0 ), uiWidth, uiHeight, bDummy ); 2088 #endif 2053 2089 UInt uiBits = m_pcEntropyCoder->getNumberOfWrittenBits(); 2054 2090 … … 5603 5639 return; 5604 5640 } 5605 5641 #if QC_SDC_UNIFY_G0130 5642 pcCU->setSDCFlagSubParts( true, 0, uiDepth ); 5643 #else 5606 5644 pcCU->setInterSDCFlagSubParts( true, 0, 0, uiDepth ); 5645 #endif 5607 5646 5608 5647 UInt uiWidth = pcCU->getWidth ( 0 ); … … 5642 5681 Int iResiOffset = ( pResDC [uiSeg] > 0 ? ( uiSegSize[uiSeg] >> 1 ) : -1*( uiSegSize[uiSeg] >> 1 ) ); 5643 5682 pResDC [uiSeg] = ( pResDC [uiSeg] + iResiOffset ) / (Int) uiSegSize[uiSeg]; 5644 5683 #if QC_SDC_UNIFY_G0130 5684 pcCU->setSDCSegmentDCOffset( pResDC[uiSeg], uiSeg, 0 ); 5685 #else 5645 5686 pcCU->setInterSDCSegmentDCOffset( pResDC[uiSeg], uiSeg, 0 ); 5687 #endif 5646 5688 } 5647 5689 … … 5698 5740 #endif 5699 5741 5742 #if QC_SDC_UNIFY_G0130 5743 Bool bNonSkip = false; 5744 #else 5700 5745 Bool bNonSkip = true; 5746 #endif 5701 5747 for( UInt uiSeg = 0; uiSeg < uiSegmentNum; uiSeg++ ) 5702 5748 { 5749 #if QC_SDC_UNIFY_G0130 5750 bNonSkip |= ( pcCU->getSDCSegmentDCOffset( uiSeg, 0 ) != 0 ) ? 1 : 0; 5751 #else 5703 5752 bNonSkip &= ( pcCU->getInterSDCSegmentDCOffset( uiSeg, 0 ) != 0 ) ? 1 : 0; 5753 #endif 5704 5754 } 5705 5755 … … 6912 6962 m_pcEntropyCoder->encodePredMode( pcCU, 0, true ); 6913 6963 m_pcEntropyCoder->encodePartSize( pcCU, 0, pcCU->getDepth(0), true ); 6964 #if QC_SDC_UNIFY_G0130 6965 m_pcEntropyCoder->encodeSDCFlag( pcCU, 0, true ); 6966 #endif 6914 6967 m_pcEntropyCoder->encodePredInfo( pcCU, 0, true ); 6915 6968 #if H_3D_IC … … 6919 6972 m_pcEntropyCoder->encodeARPW( pcCU , 0 ); 6920 6973 #endif 6921 #if H_3D_INTER_SDC 6974 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 6922 6975 m_pcEntropyCoder->encodeInterSDCFlag( pcCU, 0, true ); 6923 6976 #endif
Note: See TracChangeset for help on using the changeset viewer.