Ticket #1420: ticket_1420.patch

File ticket_1420.patch, 2.1 KB (added by Vadim, 7 years ago)
  • Lib/TLibCommon/TypeDef.h

     
    4545#include <vector>
    4646#include <cstdlib>
    4747
     48#define FIX_PLT_PRED            1
     49
    4850//! \ingroup TLibCommon
    4951//! \{
    5052
  • Lib/TLibEncoder/TEncCu.cpp

     
    13311331
    13321332  if( !terminateAllFurtherRDO && bSubBranch && uiDepth < sps.getLog2DiffMaxMinCodingBlockSize() && (!getFastDeltaQp() || uiWidth > fastDeltaQPCuMaxSize || bBoundary))
    13331333  {
     1334#if FIX_PLT_PRED
     1335    PaletteInfoBuffer tempPalettePredictor;
     1336
     1337    if( iMinQP != iMaxQP )
     1338    {
     1339      memcpy( tempPalettePredictor.lastPLTSize, lastPLTSize, sizeof( lastPLTSize ) );
     1340      memcpy( tempPalettePredictor.lastPLT[0],  lastPLT[0], sizeof( tempPalettePredictor.lastPLT[0] ) );
     1341      memcpy( tempPalettePredictor.lastPLT[1],  lastPLT[1], sizeof( tempPalettePredictor.lastPLT[1] ) );
     1342      memcpy( tempPalettePredictor.lastPLT[2],  lastPLT[2], sizeof( tempPalettePredictor.lastPLT[2] ) );
     1343    }
     1344#endif
     1345
    13341346    // further split
    13351347    for (Int iQP=iMinQP; iQP<=iMaxQP; iQP++)
    13361348    {
     
    13431355      TComDataCU* pcSubTempPartCU     = m_ppcTempCU[uhNextDepth];
    13441356      DEBUG_STRING_NEW(sTempDebug)
    13451357
     1358#if FIX_PLT_PRED
     1359      if( iMinQP != iMaxQP && iQP != iMinQP )
     1360      {
     1361        memcpy( lastPLTSize, tempPalettePredictor.lastPLTSize, sizeof( lastPLTSize ) );
     1362        memcpy( lastPLT[0],  tempPalettePredictor.lastPLT[0],  sizeof( tempPalettePredictor.lastPLT[0] ) );
     1363        memcpy( lastPLT[1],  tempPalettePredictor.lastPLT[1],  sizeof( tempPalettePredictor.lastPLT[1] ) );
     1364        memcpy( lastPLT[2],  tempPalettePredictor.lastPLT[2],  sizeof( tempPalettePredictor.lastPLT[2] ) );
     1365      }
     1366#endif
     1367
    13461368      for ( UInt uiPartUnitIdx = 0; uiPartUnitIdx < 4; uiPartUnitIdx++ )
    13471369      {
    13481370        pcSubBestPartCU->initSubCU( rpcTempCU, uiPartUnitIdx, uhNextDepth, iQP );           // clear sub partition datas or init.