Ticket #79: FIX_TICKET_75_79.patch
File FIX_TICKET_75_79.patch, 14.0 KB (added by Tomohiro Ikai, 9 years ago) |
---|
-
source/Lib/TLibCommon/TComDataCU.cpp
3920 3920 #else 3921 3921 Void TComDataCU::getInterMergeCandidates( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours 3922 3922 #endif 3923 #if H_3D_VSP 3923 #if H_3D_VSP && !FIX_TICKET_79 3924 3924 , InheritedVSPDisInfo* inheritedVSPDisInfo 3925 3925 #endif 3926 3926 #if H_3D_SPIVMP … … 3950 3950 //////// GET DISPARITIES //////// 3951 3951 ////////////////////////////////// 3952 3952 DisInfo cDisInfo = getDvInfo(uiAbsPartIdx); 3953 #if !FIX_TICKET_79 3953 3954 for(Int i = 0; i < MRG_MAX_NUM_CANDS_MEM; i++) 3954 3955 { 3955 3956 inheritedVSPDisInfo[i].m_acDvInfo = cDisInfo; // To prevent run-time error, this code must be executed always for merging process. 3956 3957 } 3958 #endif 3957 3959 m_cDefaultDisInfo = cDisInfo; 3958 3960 3959 3961 if (!( getSlice()->getIsDepth() || getSlice()->getViewIndex()>0)) // current slice is not both dependent view or depth -
source/Lib/TLibCommon/TComDataCU.h
669 669 #else 670 670 Void getInterMergeCandidates ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours 671 671 #endif 672 #if H_3D_VSP 672 #if H_3D_VSP && !FIX_TICKET_79 673 673 , InheritedVSPDisInfo* inheritedVSPDisInfo 674 674 #endif 675 675 #if H_3D_SPIVMP -
source/Lib/TLibCommon/TComMotionInfo.h
78 78 Bool m_bFound; 79 79 } IDVInfo; 80 80 #endif 81 #if H_3D_VSP 81 #if H_3D_VSP && !FIX_TICKET_79 82 82 typedef struct _InheritedVSPDisCand 83 83 { 84 84 DisInfo m_acDvInfo; -
source/Lib/TLibCommon/TypeDef.h
289 289 #define FIX_TICKET_76 1 // unused functions 290 290 #define FIX_TICKET_62 1 // buffer overflow for print 291 291 #define FIX_TICKET_61 1 // layerIdsInSets size check 292 #define FIX_TICKET_75 1 // Bi-pred restriction bug in VSP 293 #define FIX_TICKET_79 1 // unused VSP code 292 294 293 295 ///// ***** VIEW SYNTHESIS OPTIMIZAION ********* 294 296 #if H_3D_VSO -
source/Lib/TLibDecoder/TDecCu.cpp
419 419 #if H_3D_VSP 420 420 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 421 421 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 422 #if !FIX_TICKET_79 422 423 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 424 #endif 423 425 #if H_3D_SPIVMP 424 426 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; 425 427 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); … … 431 433 m_ppcCU[uiDepth]->initAvailableFlags(); 432 434 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 433 435 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 436 #if !FIX_TICKET_79 434 437 , inheritedVSPDisInfo 438 #endif 435 439 #if H_3D_SPIVMP 436 440 , pcMvFieldSP, puhInterDirSP 437 441 #endif … … 452 456 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 453 457 #endif 454 458 #endif 455 #if H_3D_VSP 459 #if H_3D_VSP && !FIX_TICKET_79 456 460 if(vspFlag[uiMergeIndex]) 457 461 { 458 462 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiAbsPartIdx, 0, uiDepth); -
source/Lib/TLibDecoder/TDecEntropy.cpp
310 310 #if H_3D_VSP 311 311 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 312 312 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 313 #if !FIX_TICKET_79 313 314 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 315 #endif 314 316 #if H_3D_SPIVMP 315 317 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); 316 318 #endif … … 317 319 pcSubCU->initAvailableFlags(); 318 320 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand); 319 321 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 322 #if !FIX_TICKET_79 320 323 , inheritedVSPDisInfo 324 #endif 321 325 #if H_3D_SPIVMP 322 326 , pcMvFieldSP, puhInterDirSP 323 327 #endif … … 329 333 , numValidMergeCand ); 330 334 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 331 335 336 #if !FIX_TICKET_79 332 337 if(vspFlag[uiMergeIndex]) 333 338 { 334 339 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiSubPartIdx, uiPartIdx, uiDepth); 335 340 } 341 #endif 336 342 #else 337 343 #if H_3D 338 344 pcSubCU->initAvailableFlags(); … … 353 359 #if H_3D_VSP 354 360 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 355 361 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 362 #if !FIX_TICKET_79 356 363 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 364 #endif 357 365 #if H_3D_SPIVMP 358 366 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); 359 367 #endif … … 360 368 pcSubCU->initAvailableFlags(); 361 369 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 362 370 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours 371 #if !FIX_TICKET_79 363 372 , inheritedVSPDisInfo 373 #endif 364 374 #if H_3D_SPIVMP 365 375 , pcMvFieldSP, puhInterDirSP 366 376 #endif … … 371 381 #endif 372 382 ,numValidMergeCand ); 373 383 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 384 #if !FIX_TICKET_79 374 385 if(vspFlag[uiMergeIndex]) 375 386 { 376 387 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiSubPartIdx, uiPartIdx, uiDepth); 377 388 } 389 #endif 378 390 #else 379 391 #if H_3D 380 392 pcSubCU->initAvailableFlags(); … … 472 484 decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); 473 485 #endif 474 486 } 475 #if H_3D_VSP 487 #if H_3D_VSP && !FIX_TICKET_75 476 488 if ( (pcCU->getInterDir(uiSubPartIdx) == 3) && pcSubCU->isBipredRestriction(uiPartIdx) && (pcCU->getVSPFlag(uiSubPartIdx) == 0)) 477 489 #else 478 490 if ( (pcCU->getInterDir(uiSubPartIdx) == 3) && pcSubCU->isBipredRestriction(uiPartIdx) ) -
source/Lib/TLibEncoder/TEncCu.cpp
1858 1858 rpcTempCU->setDvInfoSubParts(cOrigDisInfo, 0, 0, uhDepth ); 1859 1859 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 1860 1860 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 1861 #if !FIX_TICKET_79 1861 1862 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 1863 #endif 1862 1864 #if H_3D_SPIVMP 1863 1865 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; 1864 1866 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); … … 1871 1873 rpcTempCU->initAvailableFlags(); 1872 1874 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 1873 1875 rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours 1876 #if !FIX_TICKET_79 1874 1877 , inheritedVSPDisInfo 1878 #endif 1875 1879 #if H_3D_SPIVMP 1876 1880 , pcMvFieldSP, puhInterDirSP 1877 1881 #endif … … 1886 1890 ); 1887 1891 1888 1892 #else 1893 #if FIX_TICKET_79 1894 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, numValidMergeCand ); 1895 #else 1889 1896 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand ); 1890 1897 #endif 1898 #endif 1891 1899 1900 1892 1901 #endif 1893 1902 1894 1903 #if H_3D_DDD … … 1928 1937 rpcTempCU->setMergeIndexSubParts( uiMergeCand, 0, 0, uhDepth ); // interprets depth relative to LCU level 1929 1938 #if H_3D_VSP 1930 1939 rpcTempCU->setVSPFlagSubParts( vspFlag[uiMergeCand], 0, 0, uhDepth ); 1940 #if !FIX_TICKET_79 1931 1941 rpcTempCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, 0, 0, uhDepth ); 1932 1942 #endif 1943 #endif 1933 1944 #if H_3D_DDD 1934 1945 if( rpcTempCU->getSlice()->getIsDepth() && rpcTempCU->getSlice()->getViewIndex() != 0 && iDDDCand == uiMergeCand ) 1935 1946 { -
source/Lib/TLibEncoder/TEncSearch.cpp
4008 4008 Void TEncSearch::xMergeEstimation( TComDataCU* pcCU, TComYuv* pcYuvOrg, Int iPUIdx, UInt& uiInterDir, TComMvField* pacMvField, UInt& uiMergeIndex, UInt& ruiCost, TComMvField* cMvFieldNeighbours, UChar* uhInterDirNeighbours 4009 4009 #if H_3D_VSP 4010 4010 , Int* vspFlag 4011 #if !FIX_TICKET_79 4011 4012 , InheritedVSPDisInfo* inheritedVSPDisInfo 4012 4013 #endif 4014 #endif 4013 4015 #if H_3D_SPIVMP 4014 4016 , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP 4015 4017 #endif … … 4068 4070 pcCU->initAvailableFlags(); 4069 4071 pcCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand); 4070 4072 pcCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours 4071 #if H_3D_VSP 4073 #if H_3D_VSP && !FIX_TICKET_79 4072 4074 , inheritedVSPDisInfo 4073 4075 #endif 4074 4076 #if H_3D_SPIVMP … … 4098 4100 pcCU->initAvailableFlags(); 4099 4101 pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand); 4100 4102 pcCU->xGetInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours 4101 #if H_3D_VSP 4103 #if H_3D_VSP && !FIX_TICKET_79 4102 4104 , inheritedVSPDisInfo 4103 4105 #endif 4104 4106 #if H_3D_SPIVMP … … 4121 4123 ); 4122 4124 #endif 4123 4125 } 4124 #if H_3D_VSP 4126 #if H_3D_VSP && !FIX_TICKET_75 4125 4127 xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours,vspFlag, numValidMergeCand ); 4126 4128 #else 4127 4129 xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); … … 4153 4155 4154 4156 #if H_3D_VSP 4155 4157 pcCU->setVSPFlagSubParts( vspFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); 4158 #if !FIX_TICKET_79 4156 4159 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); 4157 4160 #endif 4161 #endif 4158 4162 4159 4163 #if H_3D_SPIVMP 4160 4164 pcCU->setSPIVMPFlagSubParts( pbSPIVMPFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx )); … … 4253 4257 * \param numValidMergeCand 4254 4258 * \returns Void 4255 4259 */ 4256 #if H_3D_VSP 4260 #if H_3D_VSP && !FIX_TICKET_75 4257 4261 Void TEncSearch::xRestrictBipredMergeCand( TComDataCU* pcCU, UInt puIdx, TComMvField* mvFieldNeighbours, UChar* interDirNeighbours, Int* vspFlag, Int numValidMergeCand ) 4258 4262 #else 4259 4263 Void TEncSearch::xRestrictBipredMergeCand( TComDataCU* pcCU, UInt puIdx, TComMvField* mvFieldNeighbours, UChar* interDirNeighbours, Int numValidMergeCand ) … … 4263 4267 { 4264 4268 for( UInt mergeCand = 0; mergeCand < numValidMergeCand; ++mergeCand ) 4265 4269 { 4266 #if H_3D_VSP 4270 #if H_3D_VSP && !FIX_TICKET_75 4267 4271 if ( (interDirNeighbours[mergeCand] == 3) && (vspFlag[mergeCand] == false) ) 4268 4272 #else 4269 4273 if ( interDirNeighbours[mergeCand] == 3 ) … … 4889 4893 #if H_3D_VSP 4890 4894 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 4891 4895 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 4896 #if !FIX_TICKET_79 4892 4897 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 4898 #endif 4893 4899 UInt uiAbsPartIdx = 0; 4894 4900 Int iWidth = 0; 4895 4901 Int iHeight = 0; … … 4907 4913 xMergeEstimation( pcCU, pcOrgYuv, iPartIdx, uiMRGInterDir, cMRGMvField, uiMRGIndex, uiMRGCost, cMvFieldNeighbours, uhInterDirNeighbours 4908 4914 #if H_3D_VSP 4909 4915 , vspFlag 4916 #if !FIX_TICKET_79 4910 4917 , inheritedVSPDisInfo 4911 4918 #endif 4919 #endif 4912 4920 #if H_3D_SPIVMP 4913 4921 , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP 4914 4922 #endif … … 4921 4929 pcCU->setMergeIndexSubParts( uiMRGIndex, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4922 4930 #if H_3D_VSP 4923 4931 pcCU->setVSPFlagSubParts( vspFlag[uiMRGIndex], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4932 #if !FIX_TICKET_79 4924 4933 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMRGIndex].m_acDvInfo, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4925 4934 #endif 4935 #endif 4926 4936 #if H_3D_DDD 4927 4937 if( uiMRGIndex == pcCU->getUseDDDCandIdx() ) 4928 4938 { -
source/Lib/TLibEncoder/TEncSearch.h
428 428 UChar* uhInterDirNeighbours 429 429 #if H_3D_VSP 430 430 , Int* vspFlag 431 #if !FIX_TICKET_79 431 432 , InheritedVSPDisInfo* inheritedVSPDisInfo 432 433 #endif 434 #endif 433 435 #if H_3D_SPIVMP 434 436 , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP 435 437 #endif … … 440 442 UInt puIdx, 441 443 TComMvField* mvFieldNeighbours, 442 444 UChar* interDirNeighbours, 443 #if H_3D_VSP 445 #if H_3D_VSP && !FIX_TICKET_75 444 446 Int* vspFlag, 445 447 #endif 446 448 Int numValidMergeCand );