Ticket #1159: sao.patch
File sao.patch, 4.5 KB (added by jonharper, 11 years ago) |
---|
-
source/Lib/TLibCommon/TComPicSym.cpp
348 348 Bool isLoopFiltAcrossTilePPS = getCU(ctu)->getSlice()->getPPS()->getLoopFilterAcrossTilesEnabledFlag(); 349 349 Bool isLoopFiltAcrossSlicePPS= getCU(ctu)->getSlice()->getPPS()->getLoopFilterAcrossSlicesEnabledFlag(); 350 350 351 if(!isLoopFiltAcrossSlicePPS || !isLoopFiltAcrossTilePPS)352 351 { 353 352 TComDataCU* ctuCurr = getCU(ctu); 354 353 TComDataCU* ctuLeft = isLeftAvail ?getCU(ctu-1):NULL; … … 360 359 TComDataCU* ctuBelowLeft = isBelowLeftAvail ? getCU(ctu+m_uiWidthInCU-1):NULL; 361 360 TComDataCU* ctuBelowRight = isBelowRightAvail? getCU(ctu+m_uiWidthInCU+1):NULL; 362 361 363 if(!isLoopFiltAcrossSlicePPS)364 362 { 365 363 //left 366 364 if(ctuLeft != NULL) 367 365 { 368 isLeftAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuLeft->getSlice()->getSliceCurStartCUAddr())? ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag():true;366 isLeftAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuLeft->getSlice()->getSliceCurStartCUAddr())? isLoopFiltAcrossSlicePPS && ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag():true; 369 367 } 370 368 //above 371 369 if(ctuAbove != NULL) 372 370 { 373 isAboveAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuAbove->getSlice()->getSliceCurStartCUAddr())? ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag():true;371 isAboveAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuAbove->getSlice()->getSliceCurStartCUAddr())? isLoopFiltAcrossSlicePPS && ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag():true; 374 372 } 375 373 //right 376 374 if(ctuRight != NULL) 377 375 { 378 isRightAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuRight->getSlice()->getSliceCurStartCUAddr())? ctuRight->getSlice()->getLFCrossSliceBoundaryFlag():true;376 isRightAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuRight->getSlice()->getSliceCurStartCUAddr())? isLoopFiltAcrossSlicePPS && ctuRight->getSlice()->getLFCrossSliceBoundaryFlag():true; 379 377 } 380 378 //below 381 379 if(ctuBelow != NULL) 382 380 { 383 isBelowAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuBelow->getSlice()->getSliceCurStartCUAddr())? ctuBelow->getSlice()->getLFCrossSliceBoundaryFlag():true;381 isBelowAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuBelow->getSlice()->getSliceCurStartCUAddr())? isLoopFiltAcrossSlicePPS && ctuBelow->getSlice()->getLFCrossSliceBoundaryFlag():true; 384 382 } 385 383 //above-left 386 384 if(ctuAboveLeft != NULL) 387 385 { 388 isAboveLeftAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuAboveLeft->getSlice()->getSliceCurStartCUAddr())? ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag():true;386 isAboveLeftAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuAboveLeft->getSlice()->getSliceCurStartCUAddr())? isLoopFiltAcrossSlicePPS && ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag():true; 389 387 } 390 388 //below-right 391 389 if(ctuBelowRight != NULL) 392 390 { 393 isBelowRightAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuBelowRight->getSlice()->getSliceCurStartCUAddr())? ctuBelowRight->getSlice()->getLFCrossSliceBoundaryFlag():true;391 isBelowRightAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuBelowRight->getSlice()->getSliceCurStartCUAddr())? isLoopFiltAcrossSlicePPS && ctuBelowRight->getSlice()->getLFCrossSliceBoundaryFlag():true; 394 392 } 395 393 396 394 … … 401 399 Int aboveRigthtSliceStartTS = getCUOrderMap(ctuAboveRigtht->getSlice()->getSliceCurStartCUAddr()/m_uiNumPartitions); 402 400 403 401 isAboveRightAvail = (curSliceStartTS == aboveRigthtSliceStartTS)?(true): 402 !isLoopFiltAcrossSlicePPS ?(false): 404 403 ( 405 404 (curSliceStartTS > aboveRigthtSliceStartTS)?(ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag()) 406 405 :(ctuAboveRigtht->getSlice()->getLFCrossSliceBoundaryFlag()) … … 413 412 Int belowLeftSliceStartTS = getCUOrderMap(ctuBelowLeft->getSlice()->getSliceCurStartCUAddr()/m_uiNumPartitions); 414 413 415 414 isBelowLeftAvail = (curSliceStartTS == belowLeftSliceStartTS)?(true): 415 !isLoopFiltAcrossSlicePPS ?(false): 416 416 ( 417 417 (curSliceStartTS > belowLeftSliceStartTS)?(ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag()) 418 418 :(ctuBelowLeft->getSlice()->getLFCrossSliceBoundaryFlag())