Changeset 210 in 3DVCSoftware for trunk/source/Lib/TLibEncoder/TEncGOP.cpp
- Timestamp:
- 11 Dec 2012, 18:52:43 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibEncoder/TEncGOP.cpp
r189 r210 246 246 247 247 std::vector<TComAPS>& vAPS = m_pcEncTop->getAPS(); 248 #if VIDYO_VPS_INTEGRATION 248 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 249 249 m_pcSliceEncoder->initEncSlice ( pcPic, iPOCLast, uiPOCCurr, iNumPicRcvd, iGOPid, pcSlice, m_pcEncTop->getEncTop()->getVPS(), m_pcEncTop->getSPS(), m_pcEncTop->getPPS() ); 250 250 #else … … 298 298 if( pcSlice->getSliceType() == B_SLICE ) 299 299 { 300 if( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 301 } 300 #if QC_REM_IDV_B0046 301 if( m_pcCfg->getGOPEntry(pcSlice->getSPS()->getViewId() && ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA))? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 302 #else 303 if( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 304 #endif 305 } 302 306 303 307 // Set the nal unit type … … 332 336 #endif 333 337 338 #if !QC_REM_IDV_B0046 334 339 pcSlice->setNumRefIdx( REF_PIC_LIST_0, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) ); 335 340 pcSlice->setNumRefIdx( REF_PIC_LIST_1, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) ); 336 337 TComRefPicListModification* refPicListModification = pcSlice->getRefPicListModification(); 338 refPicListModification->setRefPicListModificationFlagL0( false ); 341 #else 342 343 Bool bNalRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR)) && (pcSlice->getSPS()->getViewId()) ? 1: 0; 344 pcSlice->setNumRefIdx( REF_PIC_LIST_0, min( m_pcCfg->getGOPEntry( bNalRAP ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) ); 345 pcSlice->setNumRefIdx( REF_PIC_LIST_1, min( m_pcCfg->getGOPEntry( bNalRAP ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) ); 346 #endif 347 TComRefPicListModification* refPicListModification = pcSlice->getRefPicListModification(); 348 refPicListModification->setRefPicListModificationFlagL0( false ); 339 349 #if !H0137_0138_LIST_MODIFICATION 340 350 refPicListModification->setNumberOfRefPicListModificationsL0(0); … … 353 363 assert( tAppEncTop != NULL ); 354 364 365 366 #if FLEX_CODING_ORDER_M23723 367 TComPic * pcTexturePic; 368 if(m_pcEncTop->getIsDepth() == 1) 369 { 370 TComPicYuv * recText; 371 recText = tAppEncTop->getPicYuvFromView(m_pcEncTop->getViewId(), pcSlice->getPOC(), false ,true); 372 if(recText == NULL) 373 { 374 pcSlice->setTexturePic(NULL); 375 } 376 else 377 { 378 pcTexturePic = m_pcEncTop->getIsDepth() ? tAppEncTop->getPicFromView( m_pcEncTop->getViewId(), pcSlice->getPOC(), false ) : NULL; 379 pcSlice->setTexturePic( pcTexturePic ); 380 } 381 } 382 else 383 { 384 pcTexturePic = m_pcEncTop->getIsDepth() ? tAppEncTop->getPicFromView( m_pcEncTop->getViewId(), pcSlice->getPOC(), false ) : NULL; 385 assert( !m_pcEncTop->getIsDepth() || pcTexturePic != NULL ); 386 pcSlice->setTexturePic( pcTexturePic ); 387 } 388 389 #else 355 390 TComPic * const pcTexturePic = m_pcEncTop->getIsDepth() ? tAppEncTop->getPicFromView( m_pcEncTop->getViewId(), pcSlice->getPOC(), false ) : NULL; 356 391 assert( !m_pcEncTop->getIsDepth() || pcTexturePic != NULL ); 357 392 pcSlice->setTexturePic( pcTexturePic ); 358 393 394 #endif 359 395 std::vector<TComPic*> apcInterViewRefPics = tAppEncTop->getInterViewRefPics( m_pcEncTop->getViewId(), pcSlice->getPOC(), m_pcEncTop->getIsDepth(), pcSlice->getSPS() ); 360 396 pcSlice->setRefPicListMvc( rcListPic, apcInterViewRefPics ); … … 363 399 if( pcSlice->getSliceType() == B_SLICE ) 364 400 { 401 #if !QC_REM_IDV_B0046 365 402 if( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 403 #else 404 Bool bRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR)) && (pcSlice->getSPS()->getViewId()) ? 1: 0; 405 if( m_pcCfg->getGOPEntry( bRAP ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 406 #endif 366 407 } 367 408 … … 451 492 452 493 #if SAIT_VSO_EST_A0033 453 m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true ) ); 454 m_pcRdCost->setDepthPicYuv ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) ); 494 #ifdef FLEX_CODING_ORDER_M23723 495 { 496 Bool flagRec; 497 flagRec = ((m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true) == NULL) ? false: true); 498 m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, flagRec ) ); 499 m_pcRdCost->setDepthPicYuv ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) ); 500 } 501 #else 502 m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true ) ); 503 m_pcRdCost->setDepthPicYuv ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) ); 504 #endif 455 505 #endif 456 506 #if LGE_WVSO_A0119 … … 830 880 if ( m_bSeqFirst ) 831 881 { 832 #if VIDYO_VPS_INTEGRATION 882 #if QC_MVHEVC_B0046 883 if(!m_pcEncTop->getLayerId()) 884 { 885 #endif 886 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 833 887 { 834 888 OutputNALUnit nalu(NAL_UNIT_VPS, true, m_pcEncTop->getLayerId()); … … 840 894 #endif 841 895 #if NAL_REF_FLAG 842 #if VIDYO_VPS_INTEGRATION 896 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 843 897 OutputNALUnit nalu(NAL_UNIT_SPS, true, m_pcEncTop->getLayerId()); 844 898 #else … … 861 915 862 916 #if NAL_REF_FLAG 863 #if VIDYO_VPS_INTEGRATION 917 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 918 #if QC_MVHEVC_B0046 864 919 nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getLayerId()); 920 #else 921 nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getLayerId()); 922 #endif 865 923 #else 866 924 nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getViewId(), m_pcEncTop->getIsDepth()); … … 873 931 writeRBSPTrailingBits(nalu.m_Bitstream); 874 932 accessUnit.push_back(new NALUnitEBSP(nalu)); 875 876 m_bSeqFirst = false; 877 } 933 #if QC_MVHEVC_B0046 934 } 935 #endif 936 m_bSeqFirst = false; 937 } 878 938 879 939 /* use the main bitstream buffer for storing the marshalled picture */ … … 993 1053 #if NAL_REF_FLAG 994 1054 OutputNALUnit nalu( pcSlice->getNalUnitType(), pcSlice->isReferenced(), 995 #if !VIDYO_VPS_INTEGRATION 1055 #if !VIDYO_VPS_INTEGRATION &!QC_MVHEVC_B0046 996 1056 m_pcEncTop->getViewId(), m_pcEncTop->getIsDepth(), pcSlice->getTLayer() ); 997 1057 #else … … 1469 1529 { 1470 1530 #if NAL_REF_FLAG 1471 #if VIDYO_VPS_INTEGRATION 1531 #if VIDYO_VPS_INTEGRATION | QC_MVHEVC_B0046 1472 1532 OutputNALUnit nalu(NAL_UNIT_APS, true, m_pcEncTop->getLayerId()); 1473 1533 #else … … 1535 1595 1536 1596 #if NAL_REF_FLAG 1537 #if VIDYO_VPS_INTEGRATION 1597 #if VIDYO_VPS_INTEGRATION | QC_MVHEVC_B0046 1538 1598 OutputNALUnit nalu(NAL_UNIT_SEI, false, m_pcEncTop->getLayerId()); 1539 1599 #else … … 1973 2033 case NAL_UNIT_CODED_SLICE: return "SLICE"; 1974 2034 #if H0566_TLA 2035 #if !QC_REM_IDV_B0046 1975 2036 case NAL_UNIT_CODED_SLICE_IDV: return "IDV"; 2037 #endif 1976 2038 case NAL_UNIT_CODED_SLICE_CRA: return "CRA"; 1977 2039 case NAL_UNIT_CODED_SLICE_TLA: return "TLA"; … … 2188 2250 if( bInterViewOnlySlice ) 2189 2251 { 2252 #if !QC_REM_IDV_B0046 2190 2253 return NAL_UNIT_CODED_SLICE_IDV; 2254 #else 2255 return NAL_UNIT_CODED_SLICE_IDR; 2256 #endif 2191 2257 } 2192 2258 else … … 2201 2267 if( bInterViewOnlySlice ) 2202 2268 { 2269 #if !QC_REM_IDV_B0046 2203 2270 return NAL_UNIT_CODED_SLICE_IDV; 2271 #else 2272 return NAL_UNIT_CODED_SLICE_CRA; 2273 #endif 2204 2274 } 2205 2275 else … … 2216 2286 if( bInterViewOnlySlice ) 2217 2287 { 2288 #if !QC_REM_IDV_B0046 2218 2289 return NAL_UNIT_CODED_SLICE_IDV; 2290 #else 2291 return NAL_UNIT_CODED_SLICE_IDR; 2292 #endif 2219 2293 } 2220 2294 else … … 2454 2528 2455 2529 // analyze inter-view modifications 2530 #if !QC_REM_IDV_B0046 2456 2531 GOPEntryMvc gem = m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ); 2532 #else 2533 Bool bRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA)) && (pcSlice->getSPS()->getViewId()) ? 1:0; 2534 GOPEntryMvc gem = m_pcCfg->getGOPEntry( bRAP ? MAX_GOP : iGOPid ); 2535 #endif 2457 2536 Int numL0Modifications = 0; 2458 2537 Int numL1Modifications = 0;
Note: See TracChangeset for help on using the changeset viewer.