Ticket #840: slice_restriction.patch
File slice_restriction.patch, 2.1 KB (added by bheng, 11 years ago) |
---|
-
source/Lib/TLibEncoder/TEncSlice.cpp
1565 1565 uiBoundingCUAddrSlice = uiNumberOfCUsInFrame*rpcPic->getNumPartInCU(); 1566 1566 break; 1567 1567 } 1568 // set the slice end address to the end of the SCU row if the slice does not start at the beginning of an SCUrow1568 // WPP: if a slice does not start at the beginning of a CTB row, it must end within the same CTB row 1569 1569 if (pcSlice->getPPS()->getNumSubstreams() > 1 && (uiStartCUAddrSlice % (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU()) != 0)) 1570 1570 { 1571 uiBoundingCUAddrSlice = uiStartCUAddrSlice - (uiStartCUAddrSlice % (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU())) + (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU());1571 uiBoundingCUAddrSlice = min(uiBoundingCUAddrSlice, uiStartCUAddrSlice - (uiStartCUAddrSlice % (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU())) + (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU())); 1572 1572 } 1573 1573 pcSlice->setSliceCurEndCUAddr( uiBoundingCUAddrSlice ); 1574 1574 } … … 1605 1605 uiBoundingCUAddrSlice = uiNumberOfCUsInFrame*rpcPic->getNumPartInCU(); 1606 1606 break; 1607 1607 } 1608 // set the slice end address to the end of the SCU row if the slice does not start at the beginning of an SCUrow1608 // WPP: if a slice does not start at the beginning of a CTB row, it must end within the same CTB row 1609 1609 if (pcSlice->getPPS()->getNumSubstreams() > 1 && (uiStartCUAddrSlice % (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU()) != 0)) 1610 1610 { 1611 uiBoundingCUAddrSlice = uiStartCUAddrSlice - (uiStartCUAddrSlice % (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU())) + (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU());1611 uiBoundingCUAddrSlice = min(uiBoundingCUAddrSlice, uiStartCUAddrSlice - (uiStartCUAddrSlice % (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU())) + (rpcPic->getFrameWidthInCU()*rpcPic->getNumPartInCU())); 1612 1612 } 1613 1613 pcSlice->setSliceCurEndCUAddr( uiBoundingCUAddrSlice ); 1614 1614 }