| 718 | |
| 719 | #if FINE_GRANULARITY_SLICES && FIX_TICKET188 |
| 720 | if ( pcSlice->isNextSlice() ) |
| 721 | { |
| 722 | TComDataCU* pcCU = rpcPic->getCU( uiCUAddr ); |
| 723 | UInt uiAbsEndPartIdx = pcSlice->getSliceCurEndCUAddr() % rpcPic->getNumPartInCU(); |
| 724 | UInt uiDepth = pcCU->getDepth( uiAbsEndPartIdx-1 ); |
| 725 | if ( pcSlice->getSPS()->getUseDQP() && (g_uiMaxCUWidth>>uiDepth) < pcSlice->getPPS()->getMinCuDQPSize() ) |
| 726 | { |
| 727 | UInt uiZorderMask = ~((1<<(8-(pcSlice->getPPS()->getMaxCuDQPDepth()<<1)))-1); |
| 728 | UInt uiAbsZorderQpMinCUIdx = uiAbsEndPartIdx & uiZorderMask; |
| 729 | Bool bHasRedisual = false; |
| 730 | for ( UInt uiIdx = uiAbsZorderQpMinCUIdx; uiIdx < uiAbsEndPartIdx; uiIdx++ ) |
| 731 | { |
| 732 | if ( pcCU->getSliceStartCU(uiIdx) == pcSlice->getSliceCurStartCUAddr() && |
| 733 | ( pcCU->getCbf( uiIdx, TEXT_LUMA ) || pcCU->getCbf( uiIdx, TEXT_CHROMA_U ) || pcCU->getCbf( uiIdx, TEXT_CHROMA_V ) ) ) |
| 734 | { |
| 735 | bHasRedisual = true; |
| 736 | break; |
| 737 | } |
| 738 | } |
| 739 | |
| 740 | UInt uiTargetPartIdx; |
| 741 | if ( pcCU->getSliceStartCU( uiAbsZorderQpMinCUIdx ) != pcSlice->getSliceCurStartCUAddr() ) |
| 742 | { |
| 743 | uiTargetPartIdx = pcSlice->getSliceCurStartCUAddr() % rpcPic->getNumPartInCU(); |
| 744 | } |
| 745 | else |
| 746 | { |
| 747 | uiTargetPartIdx = uiAbsZorderQpMinCUIdx; |
| 748 | } |
| 749 | if ( !bHasRedisual ) |
| 750 | { |
| 751 | pcCU->setQPSubParts( pcCU->getRefQP( uiTargetPartIdx ), uiTargetPartIdx, uiDepth ); // set QP to default QP |
| 752 | } |
| 753 | } |
| 754 | } |
| 755 | #endif |
| 756 | |