Changeset 962 in 3DVCSoftware for branches/HTM-11.0-dev0/source/Lib/TLibEncoder/TEncSlice.cpp
- Timestamp:
- 2 Jul 2014, 18:11:25 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-11.0-dev0/source/Lib/TLibEncoder/TEncSlice.cpp
r950 r962 221 221 Int depth; 222 222 { 223 #if FIX_FIELD_DEPTH 224 Int poc = rpcSlice->getPOC(); 225 if(isField) 226 { 227 poc = (poc/2)%(m_pcCfg->getGOPSize()/2); 228 } 229 else 230 { 231 poc = poc%m_pcCfg->getGOPSize(); 232 } 233 #else 223 234 Int poc = rpcSlice->getPOC()%m_pcCfg->getGOPSize(); 235 #endif 224 236 if ( poc == 0 ) 225 237 { … … 244 256 } 245 257 } 258 #if FIX_FIELD_DEPTH 259 #if HARMONIZE_GOP_FIRST_FIELD_COUPLE 260 if(poc != 0) 261 { 262 #endif 263 if(isField && rpcSlice->getPOC()%2 == 1) 264 { 265 depth ++; 266 } 267 #if HARMONIZE_GOP_FIRST_FIELD_COUPLE 268 } 269 #endif 270 #endif 246 271 } 247 272 … … 266 291 267 292 eSliceType=B_SLICE; 293 #if EFFICIENT_FIELD_IRAP 294 if(!(isField && pocLast == 1)) 295 { 296 #endif // EFFICIENT_FIELD_IRAP 297 #if ALLOW_RECOVERY_POINT_AS_RAP 298 if(m_pcCfg->getDecodingRefreshType() == 3) 299 { 300 eSliceType = (pocLast == 0 || pocCurr % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType; 301 } 302 else 303 { 304 eSliceType = (pocLast == 0 || (pocCurr - isField) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType; 305 } 306 #else 268 307 eSliceType = (pocLast == 0 || (pocCurr - isField) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType; 308 #endif 309 #if EFFICIENT_FIELD_IRAP 310 } 311 #endif 312 #endif 269 313 270 314 rpcSlice->setSliceType ( eSliceType ); 271 #endif272 315 273 316 // ------------------------------------------------------------------------------------------------------------------ … … 450 493 } 451 494 #else 452 eSliceType = (pocLast == 0 || (pocCurr - isField) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType; 495 #if EFFICIENT_FIELD_IRAP 496 if(!(isField && pocLast == 1)) 497 { 498 #endif // EFFICIENT_FIELD_IRAP 499 #if ALLOW_RECOVERY_POINT_AS_RAP 500 if(m_pcCfg->getDecodingRefreshType() == 3) 501 { 502 eSliceType = (pocLast == 0 || (pocCurr) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType; 503 504 } 505 else 506 { 507 eSliceType = (pocLast == 0 || (pocCurr - isField) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType; 508 } 509 #else 510 eSliceType = (pocLast == 0 || (pocCurr - isField) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType; 511 #endif 512 #if EFFICIENT_FIELD_IRAP 513 } 514 #endif // EFFICIENT_FIELD_IRAP 453 515 #endif 454 516 … … 566 628 // store lambda 567 629 slice->setSliceQp( sliceQP ); 630 #if ADAPTIVE_QP_SELECTION 568 631 slice->setSliceQpBase ( sliceQP ); 632 #endif 569 633 m_pcRdCost ->setLambda( lambda ); 570 634 // for RDO … … 1105 1169 1106 1170 m_pcRateCtrl->setRCQP( estQP ); 1171 #if ADAPTIVE_QP_SELECTION 1107 1172 pcCU->getSlice()->setSliceQpBase( estQP ); 1173 #endif 1108 1174 } 1109 1175
Note: See TracChangeset for help on using the changeset viewer.