Ignore:
Timestamp:
29 Jan 2014, 03:07:07 (11 years ago)
Author:
ntt
Message:

Integration of G0148

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-9.3-dev1-NTT/source/Lib/TLibEncoder/TEncSearch.cpp

    r795 r809  
    36433643     
    36443644      PartSize ePartSize = pcCU->getPartitionSize( 0 );
     3645     
     3646#if H_3D_VSP && NTT_STORE_SPDV_VSP_G0148
     3647      pcCU->setVSPFlagSubParts( vspFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );
     3648      pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );
     3649#endif
    36453650
    36463651#if H_3D_SPIVMP
     
    36623667      }
    36633668      else
    3664       {
    3665 #endif
     3669#endif
     3670#if NTT_STORE_SPDV_VSP_G0148
     3671      if ( vspFlag[uiMergeCand] )
     3672      {
     3673        UInt partAddr;
     3674        Int vspSize;
     3675        Int width, height;
     3676        pcCU->getPartIndexAndSize( iPUIdx, partAddr, width, height );
     3677
     3678        if( uhInterDirNeighbours[ uiMergeCand ] & 0x01 )
     3679        {
     3680          pcCU->setMvFieldPUForVSP( pcCU, partAddr, width, height, REF_PIC_LIST_0, cMvFieldNeighbours[ 2*uiMergeCand + 0 ].getRefIdx(), vspSize );
     3681          pcCU->setVSPFlag( partAddr, vspSize );
     3682        }
     3683        else
     3684        {
     3685          pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvField( cMvFieldNeighbours[0 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx );
     3686        }
     3687        if( uhInterDirNeighbours[ uiMergeCand ] & 0x02 )
     3688        {
     3689          pcCU->setMvFieldPUForVSP( pcCU, partAddr, width, height, REF_PIC_LIST_1, cMvFieldNeighbours[ 2*uiMergeCand + 1 ].getRefIdx(), vspSize );
     3690          pcCU->setVSPFlag( partAddr, vspSize );
     3691        }
     3692        else
     3693        {
     3694          pcCU->getCUMvField(REF_PIC_LIST_1)->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx );
     3695        }
     3696      }
     3697      else
     3698#endif
     3699      {
    36663700        pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvField( cMvFieldNeighbours[0 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx );
    36673701        pcCU->getCUMvField(REF_PIC_LIST_1)->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx );
    3668 #if H_3D_SPIVMP
    3669       }
    3670 #endif
    3671 
    3672 #if H_3D_VSP
     3702      }
     3703
     3704#if H_3D_VSP && !NTT_STORE_SPDV_VSP_G0148
    36733705      pcCU->setVSPFlagSubParts( vspFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );
    36743706      pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );
     
    44264458        }
    44274459        else
    4428         {
    4429 #endif
     4460#endif
     4461#if NTT_STORE_SPDV_VSP_G0148
     4462        if ( vspFlag[uiMRGIndex] )
     4463        {
     4464          UInt partAddrTemp;
     4465          Int vspSize;
     4466          Int width, height;
     4467          pcCU->getPartIndexAndSize( iPartIdx, partAddrTemp, width, height ); // true or pcCU->getTotalNumPart()==256
     4468
     4469          if( uiMRGInterDir & 0x01 )
     4470          {
     4471            pcCU->setMvFieldPUForVSP( pcCU, partAddrTemp, width, height, REF_PIC_LIST_0, cMRGMvField[0].getRefIdx(), vspSize );
     4472            pcCU->setVSPFlag( partAddrTemp, vspSize );
     4473          }
     4474          else
     4475          {
     4476            pcCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvField( cMRGMvField[0], ePartSize, uiPartAddr, 0, iPartIdx );
     4477          }
     4478          if( uiMRGInterDir & 0x02 )
     4479          {
     4480            pcCU->setMvFieldPUForVSP( pcCU, partAddrTemp, width, height, REF_PIC_LIST_1, cMRGMvField[1].getRefIdx(), vspSize );
     4481            pcCU->setVSPFlag( partAddrTemp, vspSize );
     4482          }
     4483          else
     4484          {
     4485            pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMRGMvField[1], ePartSize, uiPartAddr, 0, iPartIdx );
     4486          }
     4487          pcCU->setInterDirSubParts  ( uiMRGInterDir, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
     4488        }
     4489        else
     4490#endif
     4491        {
    44304492          pcCU->setInterDirSubParts  ( uiMRGInterDir, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    44314493          {
     
    44334495            pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMRGMvField[1], ePartSize, uiPartAddr, 0, iPartIdx );
    44344496          }
    4435 #if H_3D_SPIVMP
    4436         }
    4437 #endif
     4497        }
    44384498
    44394499        pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvd    ( cMvZero,            ePartSize, uiPartAddr, 0, iPartIdx );
Note: See TracChangeset for help on using the changeset viewer.