Ticket #840: dependent_slice_restriction.patch
File dependent_slice_restriction.patch, 1.7 KB (added by bheng, 11 years ago) |
---|
-
source/Lib/TLibEncoder/TEncSlice.cpp
1678 1678 uiBoundingCUAddrDependentSlice = uiNumberOfCUsInFrame*rpcPic->getNumPartInCU(); 1679 1679 break; 1680 1680 } 1681 // WPP: if a slice segment does not start at the beginning of a CTB row, it must end within the same CTB row 1682 if (pcSlice->getPPS()->getNumSubstreams() > 1 && (uiStartCUAddrDependentSlice % (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU()) != 0)) 1683 { 1684 uiBoundingCUAddrDependentSlice = min(uiBoundingCUAddrDependentSlice, uiStartCUAddrDependentSlice - (uiStartCUAddrDependentSlice % (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU())) + (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU())); 1685 } 1681 1686 pcSlice->setDependentSliceCurEndCUAddr( uiBoundingCUAddrDependentSlice ); 1682 1687 } 1683 1688 else … … 1714 1719 uiBoundingCUAddrDependentSlice = uiNumberOfCUsInFrame*rpcPic->getNumPartInCU(); 1715 1720 break; 1716 1721 } 1722 // WPP: if a slice segment does not start at the beginning of a CTB row, it must end within the same CTB row 1723 if (pcSlice->getPPS()->getNumSubstreams() > 1 && (uiStartCUAddrDependentSlice % (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU()) != 0)) 1724 { 1725 uiBoundingCUAddrDependentSlice = min(uiBoundingCUAddrDependentSlice, uiStartCUAddrDependentSlice - (uiStartCUAddrDependentSlice % (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU())) + (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU())); 1726 } 1717 1727 pcSlice->setDependentSliceCurEndCUAddr( uiBoundingCUAddrDependentSlice ); 1718 1728 } 1719 1729 if(uiBoundingCUAddrDependentSlice>uiBoundingCUAddrSlice)