Ignore:
Timestamp:
20 Jan 2014, 05:01:03 (11 years ago)
Author:
qualcomm
Message:

integration of JCT3V-G0130 (unify signaling and delta DC coding in intra SDC and inter SDC) by Qualcomm

Location:
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibCommon
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibCommon/ContextTables.h

    r781 r782  
    119119#if QC_GENERIC_SDC_G0122
    120120#define NUM_ANGLE_FLAG_CTX            3
     121#if !QC_SDC_UNIFY_G0130
    121122#define NUM_INTRASDC_FLAG_CTX         3
     123#endif
    122124#endif
    123125#endif
     
    128130#endif
    129131
    130 #if H_3D_INTER_SDC
     132#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    131133#define NUM_INTER_SDC_FLAG_CTX        1      ///< number of context models for inter SDC flag
    132134#define NUM_INTER_SDC_SIGN_FLAG_CTX   1      ///< number of context models for sign of inter SDC residual
    133135#define NUM_INTER_SDC_RESIDUAL_CTX    1      ///< number of context models for abs of inter SDC residual
     136#endif
     137#if QC_SDC_UNIFY_G0130
     138#define NUM_SDC_FLAG_CTX              1      ///< number of context models for inter SDC flag
    134139#endif
    135140// ====================================================================================================================
     
    417422  { 155, 170, 157 },
    418423};
     424#if !QC_SDC_UNIFY_G0130
    419425static const UChar
    420426INIT_INTRASDC_FLAG[3][NUM_INTRASDC_FLAG_CTX] =
     
    425431};
    426432#endif
     433#endif
    427434
    428435static const UChar
     
    467474#endif
    468475
    469 #if H_3D_INTER_SDC
     476#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    470477static const UChar
    471478INIT_INTER_SDC_FLAG[3][NUM_INTER_SDC_FLAG_CTX] =
     
    493500#endif
    494501//! \}
    495 
    496 
    497 #endif
     502#if QC_SDC_UNIFY_G0130
     503static const UChar
     504INIT_SDC_FLAG[3][NUM_SDC_FLAG_CTX] =
     505{
     506  { 154 }, 
     507  { 154 },
     508  { 154 },
     509};
     510#endif
     511
     512#endif
  • branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibCommon/TComDataCU.cpp

    r781 r782  
    123123#if H_3D_DIM_SDC
    124124  m_pbSDCFlag             = NULL;
     125#if QC_SDC_UNIFY_G0130
     126  for( Int i = 0; i < 4; i++ )
     127  {
     128    m_apSegmentDCOffset[i]  = NULL;
     129  }
     130#else
    125131  m_apSegmentDCOffset[0]  = NULL;
    126132  m_apSegmentDCOffset[1]  = NULL;
     133#endif
    127134#endif
    128135#endif
     
    146153#endif
    147154#if H_3D_INTER_SDC
     155#if !QC_SDC_UNIFY_G0130
    148156  m_pbInterSDCFlag       = NULL;
    149157  for( Int i = 0; i < 4; i++ )
     
    151159    m_apSegmentInterDCOffset[i] = NULL;
    152160  }
     161#endif
    153162  m_pucInterSDCMask       = NULL;
    154163#endif
     
    272281#if H_3D_DIM_SDC
    273282    m_pbSDCFlag             = (Bool*)xMalloc(Bool, uiNumPartition);
     283#if QC_SDC_UNIFY_G0130
     284    for( Int i = 0; i < 4; i++ )
     285    {
     286      m_apSegmentDCOffset[i]  = (Pel*)xMalloc(Pel, uiNumPartition);
     287    }
     288#else
    274289    m_apSegmentDCOffset[0]  = (Pel*)xMalloc(Pel, uiNumPartition);
    275290    m_apSegmentDCOffset[1]  = (Pel*)xMalloc(Pel, uiNumPartition);
    276291#endif
    277292#endif
    278 #if H_3D_INTER_SDC
     293#endif
     294#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    279295    m_pbInterSDCFlag     = (Bool*  )xMalloc(Bool,   uiNumPartition);
    280296    for( Int i = 0; i < 4; i++ )
     
    400416#if H_3D_DIM_SDC
    401417    if ( m_pbSDCFlag            ) { xFree(m_pbSDCFlag);             m_pbSDCFlag             = NULL; }
     418#if QC_SDC_UNIFY_G0130
     419    for( Int i = 0; i < 4; i++ )
     420    {
     421      if ( m_apSegmentDCOffset[i] ) { xFree(m_apSegmentDCOffset[i]);  m_apSegmentDCOffset[i]  = NULL; }
     422    }
     423#else
    402424    if ( m_apSegmentDCOffset[0] ) { xFree(m_apSegmentDCOffset[0]);  m_apSegmentDCOffset[0]  = NULL; }
    403425    if ( m_apSegmentDCOffset[1] ) { xFree(m_apSegmentDCOffset[1]);  m_apSegmentDCOffset[1]  = NULL; }
    404426#endif
     427#endif
    405428#endif   
    406 #if H_3D_INTER_SDC
     429#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    407430    if ( m_pbInterSDCFlag     ) { xFree(m_pbInterSDCFlag);      m_pbInterSDCFlag    = NULL; }
    408431    for(Int i = 0; i < 4; i++ )
     
    554577    m_pbSDCFlag[ui] = pcFrom->m_pbSDCFlag[ui];
    555578#endif
    556 #if H_3D_INTER_SDC
     579#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    557580    m_pbInterSDCFlag[ui] = pcFrom->m_pbInterSDCFlag[ui];
    558581#endif
     
    616639#if H_3D_DIM_SDC
    617640    memset( m_pbSDCFlag             + firstElement,     0,                numElements * sizeof( *m_pbSDCFlag            ) );
     641#if QC_SDC_UNIFY_G0130
     642    for( Int i = 0; i < 4; i++ )
     643    {
     644      memset( m_apSegmentDCOffset[i]  + firstElement,     0,                numElements * sizeof( *m_apSegmentDCOffset[i] ) );
     645    }
     646#else
    618647    memset( m_apSegmentDCOffset[0]  + firstElement,     0,                numElements * sizeof( *m_apSegmentDCOffset[0] ) );
    619648    memset( m_apSegmentDCOffset[1]  + firstElement,     0,                numElements * sizeof( *m_apSegmentDCOffset[1] ) );
    620649#endif
    621650#endif
    622 #if H_3D_INTER_SDC
     651#endif
     652#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    623653    memset( m_pbInterSDCFlag   + firstElement,     0,                    numElements * sizeof( *m_pbInterSDCFlag ) );
    624654    for( Int i = 0; i < 4; i++ )
     
    788818#if H_3D_DIM_SDC
    789819      m_pbSDCFlag           [ui] = false;
     820#if QC_SDC_UNIFY_G0130
     821      for( Int i = 0; i < 4; i++ )
     822      {
     823        m_apSegmentDCOffset[i][ui] = 0;
     824      }
     825#else
    790826      m_apSegmentDCOffset[0][ui] = 0;
    791827      m_apSegmentDCOffset[1][ui] = 0;
    792828#endif
    793829#endif
    794 #if H_3D_INTER_SDC
     830#endif
     831#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    795832      m_pbInterSDCFlag[ui] = false;
    796833      for( Int i = 0; i < 4; i++ )
     
    901938#if H_3D_DIM_SDC
    902939  memset( m_pbSDCFlag,            0, sizeof(Bool) * m_uiNumPartition  );
     940#if QC_SDC_UNIFY_G0130
     941  for( Int i = 0; i < 4; i++ )
     942  {
     943    memset( m_apSegmentDCOffset[i], 0, sizeof(Pel) * m_uiNumPartition   );
     944  }
     945#else
    903946  memset( m_apSegmentDCOffset[0], 0, sizeof(Pel) * m_uiNumPartition   );
    904947  memset( m_apSegmentDCOffset[1], 0, sizeof(Pel) * m_uiNumPartition   );
    905948#endif
    906949#endif
    907 #if H_3D_INTER_SDC
     950#endif
     951#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    908952  memset( m_pbInterSDCFlag,           0, sizeof( Bool ) * m_uiNumPartition );
    909953  for( Int i = 0; i < 4; i++ )
     
    9781022#if H_3D_DIM_SDC
    9791023      m_pbSDCFlag           [ui] = pcCU->m_pbSDCFlag            [ uiPartOffset + ui ];
     1024#if QC_SDC_UNIFY_G0130
     1025      for( Int i = 0; i < 4; i++ )
     1026      {
     1027        m_apSegmentDCOffset[i][ui] = pcCU->m_apSegmentDCOffset[i] [ uiPartOffset + ui ];
     1028      }
     1029#else
    9801030      m_apSegmentDCOffset[0][ui] = pcCU->m_apSegmentDCOffset[0] [ uiPartOffset + ui ];
    9811031      m_apSegmentDCOffset[1][ui] = pcCU->m_apSegmentDCOffset[1] [ uiPartOffset + ui ];
    9821032#endif
    9831033#endif
    984 #if H_3D_INTER_SDC
     1034#endif
     1035#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    9851036      m_pbInterSDCFlag      [ui] = pcCU->m_pbInterSDCFlag    [ uiPartOffset + ui ];
    9861037      for( Int i = 0; i < 4; i++ )
     
    11341185#if H_3D_DIM_SDC
    11351186  m_pbSDCFlag               = pcCU->getSDCFlag()              + uiPart;
     1187#if QC_SDC_UNIFY_G0130
     1188  for( Int i = 0; i < 4; i++ )
     1189  {
     1190    m_apSegmentDCOffset[i]    = pcCU->getSDCSegmentDCOffset(i)  + uiPart;
     1191  }
     1192#else
    11361193  m_apSegmentDCOffset[0]    = pcCU->getSDCSegmentDCOffset(0)  + uiPart;
    11371194  m_apSegmentDCOffset[1]    = pcCU->getSDCSegmentDCOffset(1)  + uiPart;
    11381195#endif
     1196#endif
    11391197#endif 
    1140 #if H_3D_INTER_SDC
     1198#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    11411199  m_pbInterSDCFlag          = pcCU->getInterSDCFlag()       + uiPart;
    11421200  for( Int i = 0; i < 4; i++ )
     
    13281386#if H_3D_DIM_SDC
    13291387  memcpy( m_pbSDCFlag             + uiOffset, pcCU->getSDCFlag(),             iSizeInBool  );
     1388#if QC_SDC_UNIFY_G0130
     1389  for( Int i = 0; i < 4; i++ )
     1390  {
     1391    memcpy( m_apSegmentDCOffset[i]  + uiOffset, pcCU->getSDCSegmentDCOffset(i), sizeof( Pel ) * uiNumPartition);
     1392  }
     1393#else
    13301394  memcpy( m_apSegmentDCOffset[0]  + uiOffset, pcCU->getSDCSegmentDCOffset(0), sizeof( Pel ) * uiNumPartition);
    13311395  memcpy( m_apSegmentDCOffset[1]  + uiOffset, pcCU->getSDCSegmentDCOffset(1), sizeof( Pel ) * uiNumPartition);
    13321396#endif
    13331397#endif
    1334 #if H_3D_INTER_SDC
     1398#endif
     1399#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    13351400  memcpy( m_pbInterSDCFlag  + uiOffset, pcCU->getInterSDCFlag(),      iSizeInBool  );
    13361401  for( Int i = 0; i < 4; i++ )
     
    14501515#if H_3D_DIM_SDC
    14511516  memcpy( rpcCU->getSDCFlag()             + m_uiAbsIdxInLCU, m_pbSDCFlag,      iSizeInBool  );
     1517#if QC_SDC_UNIFY_G0130
     1518  for( Int i = 0; i < 4; i++ )
     1519  {
     1520    memcpy( rpcCU->getSDCSegmentDCOffset(i) + m_uiAbsIdxInLCU, m_apSegmentDCOffset[i], sizeof( Pel ) * m_uiNumPartition);
     1521  }
     1522#else
    14521523  memcpy( rpcCU->getSDCSegmentDCOffset(0) + m_uiAbsIdxInLCU, m_apSegmentDCOffset[0], sizeof( Pel ) * m_uiNumPartition);
    14531524  memcpy( rpcCU->getSDCSegmentDCOffset(1) + m_uiAbsIdxInLCU, m_apSegmentDCOffset[1], sizeof( Pel ) * m_uiNumPartition);
    14541525#endif
    14551526#endif
    1456 #if H_3D_INTER_SDC
     1527#endif
     1528#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    14571529  memcpy( rpcCU->getInterSDCFlag() + m_uiAbsIdxInLCU, m_pbInterSDCFlag,      iSizeInBool  );
    14581530  for( Int i = 0;i < 4; i++ )
     
    15581630#if H_3D_DIM_SDC
    15591631  memcpy( rpcCU->getSDCFlag()             + uiPartOffset, m_pbSDCFlag,      iSizeInBool  );
     1632#if QC_SDC_UNIFY_G0130
     1633  for( Int i = 0; i < 4; i++ )
     1634  {
     1635    memcpy( rpcCU->getSDCSegmentDCOffset(i) + uiPartOffset, m_apSegmentDCOffset[i], sizeof( Pel ) * uiQNumPart);
     1636  }
     1637#else
    15601638  memcpy( rpcCU->getSDCSegmentDCOffset(0) + uiPartOffset, m_apSegmentDCOffset[0], sizeof( Pel ) * uiQNumPart);
    15611639  memcpy( rpcCU->getSDCSegmentDCOffset(1) + uiPartOffset, m_apSegmentDCOffset[1], sizeof( Pel ) * uiQNumPart);
    15621640#endif
    15631641#endif
    1564 #if H_3D_INTER_SDC
     1642#endif
     1643#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
    15651644  memcpy( rpcCU->getInterSDCFlag() + uiPartOffset, m_pbInterSDCFlag,      iSizeInBool  );
    15661645  for( Int i = 0; i < 4; i++ )
     
    22932372
    22942373#if H_3D_INTER_SDC
     2374#if !QC_SDC_UNIFY_G0130
    22952375Void TComDataCU::setInterSDCFlagSubParts ( Bool bInterSDCFlag, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth )
    22962376{
     
    23022382  return 0;
    23032383}
     2384#endif
    23042385
    23052386Void TComDataCU::xSetInterSDCCUMask( TComDataCU *pcCU, UChar *pMask )
     
    24042485UInt TComDataCU::getCtxSDCFlag( UInt uiAbsPartIdx )
    24052486{
     2487#if QC_SDC_UNIFY_G0130
     2488  return 0;
     2489#else
    24062490  TComDataCU* pcTempCU;
    24072491  UInt        uiTempPartIdx;
     
    24172501
    24182502  return uiCtx;
     2503#endif
    24192504}
    24202505
  • branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibCommon/TComDataCU.h

    r781 r782  
    215215#if H_3D_DIM_SDC
    216216  Bool*         m_pbSDCFlag;
     217#if QC_SDC_UNIFY_G0130
     218  Pel*          m_apSegmentDCOffset[4];
     219#else
    217220  Pel*          m_apSegmentDCOffset[2];
    218221#endif
    219222#endif
     223#endif
    220224#if H_3D_INTER_SDC
     225#if !QC_SDC_UNIFY_G0130
    221226  Bool*         m_pbInterSDCFlag;
    222227  Int*          m_apSegmentInterDCOffset[4];
     228#endif
    223229  UChar*        m_pucInterSDCMask;
    224230#endif
     
    578584#endif
    579585#if H_3D_INTER_SDC
     586#if !QC_SDC_UNIFY_G0130
    580587  Bool*         getInterSDCFlag     ()                        { return m_pbInterSDCFlag;               }
    581588  Bool          getInterSDCFlag     ( UInt uiIdx )            { return m_pbInterSDCFlag[uiIdx];        }
     
    585592  Int           getInterSDCSegmentDCOffset( UInt uiSeg, UInt uiPartIdx ) { return m_apSegmentInterDCOffset[uiSeg][uiPartIdx]; }
    586593  Void          setInterSDCSegmentDCOffset( Int pOffset, UInt uiSeg, UInt uiPartIdx) { m_apSegmentInterDCOffset[uiSeg][uiPartIdx] = pOffset; }
    587 
     594#endif
    588595  Void          xSetInterSDCCUMask( TComDataCU *pcCU, UChar *pMask );
    589596
  • branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibCommon/TypeDef.h

    r781 r782  
    236236#endif
    237237#define QC_GENERIC_SDC_G0122              1  // Generalize SDC to all depth intra modes
    238 
     238#if H_3D_DIM_SDC && H_3D_INTER_SDC
     239#define QC_SDC_UNIFY_G0130                1  // Unify intra SDC and inter SDC
     240#endif
    239241#define H_3D_DIM_ENC                      1   // Depth Intra encoder optimizations, includes:
    240242                                              // HHI_DEPTH_INTRA_SEARCH_RAU_C0160
Note: See TracChangeset for help on using the changeset viewer.