Changeset 1179 in 3DVCSoftware for trunk/source/Lib/TLibEncoder/TEncSbac.cpp
- Timestamp:
- 7 Apr 2015, 17:05:30 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibEncoder/TEncSbac.cpp
r1133 r1179 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 4, ITU/ISO/IEC6 * Copyright (c) 2010-2015, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 58 58 , m_cCUSplitFlagSCModel ( 1, 1, NUM_SPLIT_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels ) 59 59 , m_cCUSkipFlagSCModel ( 1, 1, NUM_SKIP_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 60 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 61 , m_cCUDISFlagSCModel ( 1, 1, NUM_DIS_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 62 , m_cCUDISTypeSCModel ( 1, 1, NUM_DIS_TYPE_CTX , m_contextModels + m_numContextModels, m_numContextModels) 63 #else 60 64 #if H_3D_SINGLE_DEPTH 61 65 , m_cCUSingleDepthFlagSCModel ( 1, 1, NUM_SINGLEDEPTH_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 62 66 , m_cSingleDepthValueSCModel ( 1, 1, NUM_SINGLE_DEPTH_VALUE_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 67 #endif 63 68 #endif 64 69 , m_cCUMergeFlagExtSCModel ( 1, 1, NUM_MERGE_FLAG_EXT_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 134 139 135 140 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG ); 141 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 142 m_cCUDISFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DIS_FLAG ); 143 m_cCUDISTypeSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DIS_TYPE ); 144 #else 136 145 #if H_3D_SINGLE_DEPTH 137 146 m_cCUSingleDepthFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 138 147 m_cSingleDepthValueSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); 148 #endif 139 149 #endif 140 150 m_cCUMergeFlagExtSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT); … … 214 224 curCost = m_cCUSplitFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SPLIT_FLAG ); 215 225 curCost += m_cCUSkipFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SKIP_FLAG ); 226 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 227 curCost += m_cCUDISFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DIS_FLAG ); 228 curCost += m_cCUDISTypeSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DIS_TYPE ); 229 #else 216 230 #if H_3D_SINGLE_DEPTH 217 231 curCost += m_cCUSingleDepthFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 218 232 curCost += m_cSingleDepthValueSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); 233 #endif 219 234 #endif 220 235 curCost += m_cCUMergeFlagExtSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_MERGE_FLAG_EXT); … … 287 302 288 303 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG ); 304 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 305 m_cCUDISFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DIS_FLAG ); 306 m_cCUDISTypeSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DIS_TYPE ); 307 #else 289 308 #if H_3D_SINGLE_DEPTH 290 309 m_cCUSingleDepthFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 291 310 m_cSingleDepthValueSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); 292 #endif 311 #endif 312 #endif 293 313 m_cCUMergeFlagExtSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT); 294 314 m_cCUMergeIdxExtSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_MERGE_IDX_EXT); … … 446 466 m_pcBinIf->encodeBinsEP( bins, numBins ); 447 467 } 468 469 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 470 Void TEncSbac::codeDIS( TComDataCU* pcCU, UInt uiAbsPartIdx ) 471 { 472 UInt uiSymbol = pcCU->getDISFlag(uiAbsPartIdx ) ? 1 : 0; 473 m_pcBinIf->encodeBin( uiSymbol, m_cCUDISFlagSCModel.get( 0, 0, 0 ) ); 474 if(uiSymbol) 475 { 476 UInt uiUnaryIdx = (UInt) pcCU->getDISType(uiAbsPartIdx); 477 UInt uiNumCand = 4; 478 479 if ( uiNumCand > 1 ) 480 { 481 for( UInt ui = 0; ui < uiNumCand - 1; ++ui ) 482 { 483 const UInt uiSymbol2 = ui == uiUnaryIdx ? 0 : 1; 484 if ( ui == 0 ) 485 { 486 m_pcBinIf->encodeBin( uiSymbol2, m_cCUDISTypeSCModel.get( 0, 0, 0 ) ); 487 } 488 else 489 { 490 m_pcBinIf->encodeBinEP( uiSymbol2 ); 491 } 492 if( uiSymbol2 == 0 ) 493 { 494 break; 495 } 496 } 497 } 498 } 499 } 500 #else 448 501 #if H_3D_SINGLE_DEPTH 449 502 Void TEncSbac::codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx ) … … 477 530 } 478 531 #endif 532 #endif 533 479 534 /** Coding of coeff_abs_level_minus3 480 535 * \param uiSymbol value of coeff_abs_level_minus3 … … 1040 1095 DTRACE_CABAC_V( uiCtx ) 1041 1096 DTRACE_CABAC_T( "\n" ) 1042 #endif 1097 #else 1098 DTRACE_TU("split_transform_flag", uiSymbol ) 1099 #endif 1100 1043 1101 } 1044 1102 … … 1371 1429 DTRACE_CABAC_V( uiAbsPartIdx ) 1372 1430 DTRACE_CABAC_T( "\n" ) 1431 #else 1432 if ( eType == TEXT_CHROMA_U ) 1433 { 1434 DTRACE_TU("cbf_cb", uiCbf ) 1435 } 1436 else if ( eType == TEXT_CHROMA_V ) 1437 { 1438 DTRACE_TU("cbf_cr", uiCbf ) 1439 } 1440 else 1441 { 1442 DTRACE_TU("cbf_luma", uiCbf ) 1443 } 1373 1444 #endif 1374 1445 } … … 1446 1517 } 1447 1518 1519 #if H_3D_DISABLE_CHROMA 1520 if( pcCU->getSlice()->getSPS()->getChromaFormatIdc() != 0 ) 1521 { 1522 #endif 1448 1523 piPCMSample = pcCU->getPCMSampleCb() + uiChromaOffset; 1449 1524 uiWidth = pcCU->getWidth(uiAbsPartIdx)/2; … … 1477 1552 piPCMSample += uiWidth; 1478 1553 } 1554 #if H_3D_DISABLE_CHROMA 1555 } 1556 #endif 1479 1557 m_pcBinIf->resetBac(); 1480 1558 } … … 2289 2367 UInt uiSymbol = pcCU->getSDCFlag( uiAbsPartIdx ) ? 1 : 0; 2290 2368 UInt uiCtxSDCFlag = pcCU->getCtxSDCFlag( uiAbsPartIdx ); 2291 2369 DTRACE_CU("dc_only_flag", uiSymbol) 2292 2370 m_pcBinIf->encodeBin( uiSymbol, m_cSDCFlagSCModel.get( 0, 0, uiCtxSDCFlag ) ); 2293 2371 } … … 2305 2383 UInt uiSymbol = pcCU->getDBBPFlag( uiAbsPartIdx ) ? 1 : 0; 2306 2384 m_pcBinIf->encodeBin( uiSymbol, m_cDBBPFlagSCModel.get( 0, 0, 0 ) ); 2385 DTRACE_CU("dbbp_flag", uiSymbol) 2307 2386 } 2308 2387 #endif
Note: See TracChangeset for help on using the changeset viewer.