Changeset 210 in 3DVCSoftware for trunk/source/Lib/TLibEncoder
- Timestamp:
- 11 Dec 2012, 18:52:43 (12 years ago)
- Location:
- trunk/source/Lib/TLibEncoder
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibEncoder/NALwrite.cpp
r77 r210 64 64 #endif 65 65 66 #if QC_MVHEVC_B0046 67 bsNALUHeader.write(nalu.m_layerId, 5); // when nal_ref_flag is signalled, 5 bits here. otherwise, 6 bits 68 bsNALUHeader.write(nalu.m_temporalId + 1, 3); // temporal_id 69 #else 66 70 #if VIDYO_VPS_INTEGRATION 67 71 bsNALUHeader.write(nalu.m_temporalId, 3); // temporal_id … … 79 83 case NAL_UNIT_CODED_SLICE_IDR: 80 84 #if H0566_TLA 85 #if !QC_REM_IDV_B0046 81 86 case NAL_UNIT_CODED_SLICE_IDV: 87 #endif 82 88 case NAL_UNIT_CODED_SLICE_CRA: 83 89 case NAL_UNIT_CODED_SLICE_TLA: … … 95 101 #endif 96 102 #endif 97 103 #endif 98 104 out.write(bsNALUHeader.getByteStream(), bsNALUHeader.getByteStreamLength()); 99 105 … … 196 202 } 197 203 204 #if !QC_MVHEVC_B0046 198 205 /** 199 206 * Copy NALU from naluSrc to naluDest … … 222 229 naluDest.m_Bitstream = naluSrc.m_Bitstream; 223 230 } 231 #endif 224 232 225 233 //! \} -
trunk/source/Lib/TLibEncoder/NALwrite.h
r77 r210 62 62 NalRefIdc nalRefIDC, 63 63 #endif 64 #if VIDYO_VPS_INTEGRATION 64 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 65 65 unsigned layerId, 66 66 #else … … 70 70 unsigned temporalID = 0) 71 71 #if NAL_REF_FLAG 72 #if VIDYO_VPS_INTEGRATION 72 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 73 73 : NALUnit(nalUnitType, nalRefFlag, layerId, temporalID) 74 74 #else -
trunk/source/Lib/TLibEncoder/TEncCavlc.cpp
r189 r210 375 375 } 376 376 377 #if QC_MVHEVC_B0046 378 Void TEncCavlc::codeVPS( TComVPS* pcVPS ) 379 { 380 WRITE_CODE( pcVPS->getVPSId(), 4, "video_parameter_set_id" ); 381 WRITE_FLAG( pcVPS->getTemporalNestingFlag() -1, "temporal_id_nesting_flag" ); 382 WRITE_CODE( 0, 2, "vps_reserved_zero_2bits" ); 383 WRITE_CODE( pcVPS->getMaxLayers() - 1, 6, "vps_max_layers_minus1" ); 384 WRITE_CODE( pcVPS->getMaxTLayers() - 1, 3, "vps_max_sub_layers_minus1" ); 385 //to be determined 386 //profile_tier_level( 1, vps_max_sub_layers_minus1 ); 387 //to be modified 388 WRITE_CODE( 0, 12, "vps_extension_offset" ); 389 for(UInt i=0; i <= pcVPS->getMaxTLayers()-1; i++) 390 { 391 WRITE_UVLC( pcVPS->getMaxDecPicBuffering(i), "max_dec_pic_buffering[i]" ); 392 WRITE_UVLC( pcVPS->getNumReorderPics(i), "num_reorder_pics[i]" ); 393 WRITE_UVLC( pcVPS->getMaxLatencyIncrease(i), "max_latency_increase[i]" ); 394 } 395 //!!!waste one bit: 3-view, 3; 2-view or more views: 1 396 WRITE_UVLC(pcVPS->getNumHRDParameters(), "vps_num_hrd_parameters" ); 397 assert(pcVPS->getNumHRDParameters()==0); 398 for ( UInt i = 0; i < pcVPS->getNumHRDParameters(); i ++) 399 { 400 // if( i > 0 ) 401 //{ 402 // WRITE_UVLC (0, "op_num_layer_id_values_minus1[ opIdx ]"); 403 // for( i = 0; i <= op_num_layer_id_values_minus1[ opIdx ]; i++ ) 404 // WRITE_CODE(0, 6, "op_layer_id[ opIdx ][ i ]"); 405 //} 406 //hrd_parameters( i = = 0, vps_max_sub_layers_minus1 ); 407 } 408 WRITE_CODE( 1, 1, "bit_equal_to_one" ); 409 //btye aligned 410 m_pcBitIf->writeAlignOne(); 411 412 if(pcVPS->getMaxLayers() == 3) 413 pcVPS->setNumAddiLayerOperationPoints (pcVPS->getMaxLayers()); //may be configured 414 else 415 pcVPS->setNumAddiLayerOperationPoints (1); 416 pcVPS->setNumAddiProLevelSets (1); 417 WRITE_CODE( pcVPS->getNumAddiLayerOperationPoints(), 8, "num_additional_layer_operation_points" ); 418 WRITE_CODE( pcVPS->getNumAddiProLevelSets(), 8, "num_additional_profile_level_sets" ); 419 for(UInt i=0; i <= pcVPS->getMaxLayers()-1; i++) 420 { 421 WRITE_CODE( 0, 4, "num_types_zero_4bits[i]" ); 422 WRITE_CODE( 0, 4, "type_zero_4bits[i]" ); 423 WRITE_CODE( pcVPS->getViewId(i), 8, "view_id[i]" ); 424 if(i) 425 { 426 WRITE_CODE( pcVPS->getNumDirectRefLayer(i), 6, "num_direct_ref_layers[ i ]" ); 427 for (UInt j = 0; j< pcVPS->getNumDirectRefLayer(i); j++) 428 { 429 WRITE_CODE( pcVPS->getDirectRefLayerId (i, j), 6, "ref_layer_id[i][j]" ); 430 } 431 } 432 } 433 for( UInt i=1; i<=pcVPS->getNumAddiProLevelSets(); i++) 434 { 435 //profile_tier_level 436 } 437 for( UInt i=1; i<= pcVPS->getNumAddiLayerOperationPoints(); i++) 438 { 439 if(pcVPS->getMaxLayers() == 3) 440 { 441 pcVPS->setNumOpLayerIdMinus1((i < pcVPS->getNumAddiLayerOperationPoints() ? 1: 2), (i-1)); 442 } 443 else if( i==1 ) 444 { 445 assert(pcVPS->getNumAddiLayerOperationPoints()==1); 446 pcVPS->setNumOpLayerIdMinus1(pcVPS->getMaxLayers()-1, (i-1)); 447 } 448 WRITE_UVLC( pcVPS->getNumOpLayerIdMinus1(i-1), "op_num_layer_id_values_minus1[ opIdx ]" ); 449 for(UInt j = 0; j <= pcVPS->getNumOpLayerIdMinus1(i-1); j++ ) 450 { 451 if(pcVPS->getMaxLayers() == 3 && i== 2 && j==1) 452 pcVPS->setNumOpLayerId (2, i-1, j); 453 else 454 pcVPS->setNumOpLayerId (j, i-1, j); 455 WRITE_UVLC( pcVPS->getNumOpLayerId(i-1, j), "op_layer_id[ opIdx ][ i ]" ); 456 } 457 if (pcVPS->getNumAddiProLevelSets()) 458 { 459 //profile_level_idx[ i ] 460 } 461 } 462 return; 463 } 464 #else 377 465 #if VIDYO_VPS_INTEGRATION 378 466 Void TEncCavlc::codeVPS( TComVPS* pcVPS ) … … 419 507 } 420 508 #endif 421 509 #endif 422 510 #if HHI_MPI 423 511 Void TEncCavlc::codeSPS( TComSPS* pcSPS, Bool bIsDepth ) … … 620 708 #endif 621 709 WRITE_FLAG( 1, "sps_extension_flag" ); 622 710 #if !QC_MVHEVC_B0046 623 711 WRITE_FLAG( (pcSPS->getNumberOfUsableInterViewRefs() > 0) ? 1 : 0, "interview_refs_present_flag" ); 624 712 if( pcSPS->getNumberOfUsableInterViewRefs() > 0 ) … … 719 807 } 720 808 WRITE_FLAG( 0, "sps_extension2_flag" ); 809 #endif 721 810 } 722 811 … … 795 884 if (!bEntropySlice) 796 885 { 886 #if QC_MVHEVC_B0046 887 WRITE_UVLC( 0, "pic_parameter_set_id" ); 888 #else 797 889 WRITE_UVLC( pcSlice->getPPS()->getPPSId(), "pic_parameter_set_id" ); 890 #endif 798 891 #if H0388 799 892 if( pcSlice->getPPS()->getOutputFlagPresentFlag() ) … … 802 895 } 803 896 #endif 897 #if QC_REM_IDV_B0046 898 if(pcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR && pcSlice->getViewId() == 0) 899 #else 804 900 if(pcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR) 901 #endif 805 902 { 806 903 WRITE_UVLC( 0, "idr_pic_id" ); … … 810 907 { 811 908 WRITE_CODE( (pcSlice->getPOC()-pcSlice->getLastIDR()+(1<<pcSlice->getSPS()->getBitsForPOC()))%(1<<pcSlice->getSPS()->getBitsForPOC()), pcSlice->getSPS()->getBitsForPOC(), "pic_order_cnt_lsb"); 909 #if QC_REM_IDV_B0046 910 if( pcSlice->getPOC() == 0 && !(pcSlice->getSPS()->getViewId() && (pcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || pcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA))) 911 #else 812 912 if( pcSlice->getPOC() == 0 && pcSlice->getNalUnitType() != NAL_UNIT_CODED_SLICE_IDV ) 913 #endif 813 914 { 814 915 TComReferencePictureSet* rps = pcSlice->getRPS(); -
trunk/source/Lib/TLibEncoder/TEncCavlc.h
r189 r210 114 114 UInt getCoeffCost () { return m_uiCoeffCost; } 115 115 116 #if VIDYO_VPS_INTEGRATION 116 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 117 117 Void codeVPS ( TComVPS* pcVPS ); 118 118 #endif -
trunk/source/Lib/TLibEncoder/TEncCfg.h
r189 r210 183 183 Int m_iSearchRange; // 0:Full frame 184 184 Int m_bipredSearchRange; 185 185 #if DV_V_RESTRICTION_B0037 186 Bool m_bUseDisparitySearchRangeRestriction; 187 Int m_iVerticalDisparitySearchRange; 188 #endif 186 189 //====== Quality control ======== 187 190 Int m_iMaxDeltaQP; // Max. absolute delta QP (1:default) … … 307 310 #endif 308 311 309 #if VIDYO_VPS_INTEGRATION 312 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 310 313 UInt m_layerId; 311 314 #endif … … 322 325 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 323 326 Bool m_bUseDMM; 327 #endif 328 329 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 330 Bool m_bUseDMM34; 324 331 #endif 325 332 … … 468 475 Void setSearchRange ( Int i ) { m_iSearchRange = i; } 469 476 Void setBipredSearchRange ( Int i ) { m_bipredSearchRange = i; } 470 477 #if DV_V_RESTRICTION_B0037 478 Void setUseDisparitySearchRangeRestriction ( Bool b ) { m_bUseDisparitySearchRangeRestriction = b; } 479 Void setVerticalDisparitySearchRange ( Int i ) { m_iVerticalDisparitySearchRange = i; } 480 #endif 471 481 #if HHI_INTER_VIEW_MOTION_PRED 472 482 UInt getMultiviewMvRegMode () { return m_uiMultiviewMvRegMode; } … … 559 569 Int getFastSearch () { return m_iFastSearch; } 560 570 Int getSearchRange () { return m_iSearchRange; } 561 571 #if DV_V_RESTRICTION_B0037 572 Bool getUseDisparitySearchRangeRestriction () { return m_bUseDisparitySearchRangeRestriction; } 573 Int getVerticalDisparitySearchRange () { return m_iVerticalDisparitySearchRange; } 574 #endif 562 575 #if HHI_VSO 563 576 //==== VSO ========== … … 820 833 Int getTSIG() { return m_signHidingThreshold; } 821 834 #endif 822 #if VIDYO_VPS_INTEGRATION 835 #if VIDYO_VPS_INTEGRATION |QC_MVHEVC_B0046 823 836 Void setLayerId ( UInt layerId ) { m_layerId = layerId; } 824 837 UInt getLayerId () { return m_layerId; } … … 833 846 Void setUseDMM( Bool b) { m_bUseDMM = b; } 834 847 Bool getUseDMM() { return m_bUseDMM; } 848 #endif 849 850 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 851 Void setUseDMM34( Bool b) { m_bUseDMM34 = b; } 852 Bool getUseDMM34() { return m_bUseDMM34; } 835 853 #endif 836 854 -
trunk/source/Lib/TLibEncoder/TEncEntropy.cpp
r189 r210 121 121 } 122 122 123 #if VIDYO_VPS_INTEGRATION 123 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 124 124 Void TEncEntropy::encodeVPS( TComVPS* pcVPS ) 125 125 { … … 129 129 #endif 130 130 131 #if VIDYO_VPS_INTEGRATION 131 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 132 132 Void codeVPS ( TComVPS* pcVPS ); 133 133 #endif -
trunk/source/Lib/TLibEncoder/TEncEntropy.h
r189 r210 76 76 virtual UInt getCoeffCost () = 0; 77 77 78 #if VIDYO_VPS_INTEGRATION 78 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 79 79 virtual Void codeVPS ( TComVPS* pcVPS ) = 0; 80 80 #endif … … 242 242 243 243 public: 244 #if VIDYO_VPS_INTEGRATION 244 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 245 245 Void encodeVPS ( TComVPS* pcVPS); 246 246 #endif -
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; -
trunk/source/Lib/TLibEncoder/TEncSbac.cpp
r189 r210 396 396 } 397 397 398 #if VIDYO_VPS_INTEGRATION 398 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 399 399 Void TEncSbac::codeVPS( TComVPS* pcVPS ) 400 400 { … … 1076 1076 #endif 1077 1077 #if HHI_DMM_PRED_TEX 1078 1079 #if FLEX_CODING_ORDER_M23723 1080 if ( !pcCU->getSlice()->getSPS()->getUseDMM34() ) 1081 { 1082 assert( uiDir != DMM_WEDGE_PREDTEX_D_IDX ); 1083 assert( uiDir != DMM_CONTOUR_PREDTEX_D_IDX ); 1084 } 1085 #endif 1086 1078 1087 if( uiDir == DMM_WEDGE_PREDTEX_D_IDX ) { xCodeWedgePredTexDeltaInfo ( pcCU, uiAbsPartIdx ); } 1079 1088 if( uiDir == DMM_CONTOUR_PREDTEX_D_IDX ) { xCodeContourPredTexDeltaInfo( pcCU, uiAbsPartIdx ); } -
trunk/source/Lib/TLibEncoder/TEncSbac.h
r189 r210 98 98 //--SBAC RD 99 99 100 #if VIDYO_VPS_INTEGRATION 100 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 101 101 Void codeVPS ( TComVPS* pcVPS ); 102 102 #endif -
trunk/source/Lib/TLibEncoder/TEncSearch.cpp
r189 r210 160 160 Int iSearchRange, 161 161 Int bipredSearchRange, 162 #if DV_V_RESTRICTION_B0037 163 Bool bUseDisparitySearchRangeRestriction, 164 Int iVerticalDisparitySearchRange, 165 #endif 162 166 Int iFastSearch, 163 167 Int iMaxDeltaQP, … … 172 176 m_iSearchRange = iSearchRange; 173 177 m_bipredSearchRange = bipredSearchRange; 178 #if DV_V_RESTRICTION_B0037 179 m_bUseDisparitySearchRangeRestriction = bUseDisparitySearchRangeRestriction; 180 m_iVerticalDisparitySearchRange = iVerticalDisparitySearchRange; 181 #endif 174 182 m_iFastSearch = iFastSearch; 175 183 m_iMaxDeltaQP = iMaxDeltaQP; … … 2236 2244 #endif 2237 2245 #if HHI_DMM_PRED_TEX 2246 2247 #if FLEX_CODING_ORDER_M23723 2248 if ( pcCU->getSlice()->getSPS()->getUseDMM34() ) 2249 { 2250 #endif 2238 2251 UInt uiTexTabIdx = 0; 2239 2252 Int iTexDeltaDC1 = 0; … … 2259 2272 uiRdModeList[ numModesForFullRD++ ] = DMM_CONTOUR_PREDTEX_D_IDX; 2260 2273 } 2274 #if FLEX_CODING_ORDER_M23723 2275 } 2276 #endif 2261 2277 #endif 2262 2278 } … … 2303 2319 2304 2320 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2321 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 2322 if( m_pcEncCfg->getIsDepth() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight, pcCU->getSlice()->getSPS()->getUseDMM34() ) 2323 #if LGE_EDGE_INTRA_A0070 2324 && uiOrgMode < EDGE_INTRA_IDX 2325 #endif 2326 ) 2327 2328 #else 2329 2305 2330 if( m_pcEncCfg->getIsDepth() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight ) 2306 2331 #if LGE_EDGE_INTRA_A0070 … … 2308 2333 #endif 2309 2334 ) 2335 #endif 2310 2336 { 2311 2337 continue; … … 4214 4240 TComYuv* pcYuv = pcYuvOrg; 4215 4241 m_iSearchRange = m_aaiAdaptSR[eRefPicList][iRefIdxPred]; 4216 4242 4217 4243 Int iSrchRng = ( bBi ? m_bipredSearchRange : m_iSearchRange ); 4244 #if DV_V_RESTRICTION_B0037 4245 Int iVerDispSrchRng = m_iVerticalDisparitySearchRange; 4246 #endif 4218 4247 TComPattern* pcPatternKey = pcCU->getPattern (); 4219 4248 … … 4252 4281 4253 4282 TComMv cMvPred = *pcMvPred; 4254 4283 4284 #if DV_V_RESTRICTION_B0037 4285 Bool bMv_VRng_Restricted = false; 4286 if( pcCU->getSlice()->getViewId() > 0 4287 && 4288 pcCU->getSlice()->getRefPic( eRefPicList, iRefIdxPred )->getPOC() == pcCU->getSlice()->getPOC() 4289 && 4290 m_bUseDisparitySearchRangeRestriction 4291 ) 4292 { 4293 bMv_VRng_Restricted = true; 4294 } 4295 #endif 4296 4297 #if DV_V_RESTRICTION_B0037 4298 if ( bBi ) xSetSearchRange ( pcCU, rcMv , iSrchRng, cMvSrchRngLT, cMvSrchRngRB, bMv_VRng_Restricted, iVerDispSrchRng ); 4299 else xSetSearchRange ( pcCU, cMvPred, iSrchRng, cMvSrchRngLT, cMvSrchRngRB, bMv_VRng_Restricted, iVerDispSrchRng ); 4300 #else 4255 4301 if ( bBi ) xSetSearchRange ( pcCU, rcMv , iSrchRng, cMvSrchRngLT, cMvSrchRngRB ); 4256 4302 else xSetSearchRange ( pcCU, cMvPred, iSrchRng, cMvSrchRngLT, cMvSrchRngRB ); 4257 4303 #endif 4304 4258 4305 m_pcRdCost->getMotionCost ( 1, 0 ); 4259 4306 … … 4280 4327 if( bMultiviewReg && !bBi ) 4281 4328 { 4329 #if DV_V_RESTRICTION_B0037 4330 xSetSearchRange( pcCU, cOrgDepthMapMv, iSrchRng, cMvSrchRngLT, cMvSrchRngRB, bMv_VRng_Restricted, iVerDispSrchRng ); 4331 #else 4282 4332 xSetSearchRange( pcCU, cOrgDepthMapMv, iSrchRng, cMvSrchRngLT, cMvSrchRngRB ); 4283 } 4284 } 4285 #endif 4286 4333 #endif 4334 } 4335 } 4336 #endif 4337 #if QC_MVHEVC_B0046 4338 m_pcRdCost->setMultiviewReg( 0 ); 4339 #endif 4287 4340 setWpScalingDistParam( pcCU, iRefIdxPred, eRefPicList ); 4288 4341 // Do integer search … … 4330 4383 } 4331 4384 4332 4385 #if DV_V_RESTRICTION_B0037 4386 Void TEncSearch::xSetSearchRange ( TComDataCU* pcCU, TComMv& cMvPred, Int iSrchRng, TComMv& rcMvSrchRngLT, TComMv& rcMvSrchRngRB, Bool bMv_VRng_Restricted, Int iVerDispSrchRng ) 4387 #else 4333 4388 Void TEncSearch::xSetSearchRange ( TComDataCU* pcCU, TComMv& cMvPred, Int iSrchRng, TComMv& rcMvSrchRngLT, TComMv& rcMvSrchRngRB ) 4389 #endif 4334 4390 { 4335 4391 Int iMvShift = 2; … … 4346 4402 rcMvSrchRngRB.setHor( cTmpMvPred.getHor() + (iSrchRng << iMvShift) ); 4347 4403 rcMvSrchRngRB.setVer( cTmpMvPred.getVer() + (iSrchRng << iMvShift) ); 4404 4405 #if DV_V_RESTRICTION_B0037 4406 if ( bMv_VRng_Restricted ) { 4407 Int iRestrictMvVrange = ( iVerDispSrchRng ) << iMvShift; 4408 if ( rcMvSrchRngRB.getVer() >= iRestrictMvVrange ){ 4409 rcMvSrchRngRB.setVer( iRestrictMvVrange ); 4410 } 4411 //restrict minus vector too 4412 if ( rcMvSrchRngLT.getVer() <= -iRestrictMvVrange ){ 4413 rcMvSrchRngLT.setVer( -iRestrictMvVrange ); 4414 } 4415 } 4416 #endif 4348 4417 pcCU->clipMv ( rcMvSrchRngLT ); 4349 4418 pcCU->clipMv ( rcMvSrchRngRB ); … … 6415 6484 6416 6485 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 6486 #if ((HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX)&&FLEX_CODING_ORDER_M23723) 6487 Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight, Bool bDMMAvailable34 ) 6488 #else 6417 6489 Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight ) 6490 #endif 6418 6491 { 6419 6492 if( uiMode < NUM_INTRA_MODE ) return true; … … 6443 6516 bDMMAvailable = false; 6444 6517 } 6518 6519 #if FLEX_CODING_ORDER_M23723 6520 if ( !bDMMAvailable34 ) 6521 { 6522 bDMMAvailable = false; 6523 } 6524 #endif 6525 6445 6526 } 6446 6527 #endif -
trunk/source/Lib/TLibEncoder/TEncSearch.h
r189 r210 94 94 Int m_iSearchRange; 95 95 Int m_bipredSearchRange; // Search range for bi-prediction 96 #if DV_V_RESTRICTION_B0037 97 Bool m_bUseDisparitySearchRangeRestriction; 98 Int m_iVerticalDisparitySearchRange; 99 #endif 96 100 Int m_iFastSearch; 97 101 Int m_aaiAdaptSR[2][33]; … … 132 136 Int iSearchRange, 133 137 Int bipredSearchRange, 138 #if DV_V_RESTRICTION_B0037 139 Bool bUseDisparitySearchRangeRestriction, 140 Int iVerticalDisparitySearchRange, 141 #endif 134 142 Int iFastSearch, 135 143 Int iMaxDeltaQP, … … 325 333 326 334 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 335 327 336 Bool predIntraLumaDMMAvailable ( UInt uiMode, 328 337 UInt uiWidth, 329 UInt uiHeight ); 338 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 339 UInt uiHeight, 340 Bool bDMMAvailable34 ); 341 #else 342 UInt uiHeight ); 343 #endif 344 330 345 Void xGetWedgeDeltaDCsMinDist ( TComWedgelet* pcWedgelet, 331 346 TComDataCU* pcCU, … … 523 538 UInt& ruiSAD ); 524 539 540 #if DV_V_RESTRICTION_B0037 541 Void xSetSearchRange ( TComDataCU* pcCU, 542 TComMv& cMvPred, 543 Int iSrchRng, 544 TComMv& rcMvSrchRngLT, 545 TComMv& rcMvSrchRngRB, 546 Bool bDispSrchRngRst, 547 Int iDispVerSrchRng ); 548 #else 525 549 Void xSetSearchRange ( TComDataCU* pcCU, 526 550 TComMv& cMvPred, … … 528 552 TComMv& rcMvSrchRngLT, 529 553 TComMv& rcMvSrchRngRB ); 554 #endif 530 555 531 556 Void xPatternSearchFast ( TComDataCU* pcCU, -
trunk/source/Lib/TLibEncoder/TEncSlice.cpp
r189 r210 162 162 \param pPPS PPS associated with the slice 163 163 */ 164 #if VIDYO_VPS_INTEGRATION 164 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 165 165 Void TEncSlice::initEncSlice( TComPic* pcPic, Int iPOCLast, UInt uiPOCCurr, Int iNumPicRcvd, Int iGOPid, TComSlice*& rpcSlice, TComVPS * pVPS, TComSPS* pSPS, TComPPS *pPPS ) 166 166 #else … … 172 172 173 173 rpcSlice = pcPic->getSlice(0); 174 #if VIDYO_VPS_INTEGRATION 174 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 175 175 rpcSlice->setVPS( pVPS ); 176 176 #endif … … 820 820 UInt uiTileStartLCU = 0; 821 821 UInt uiTileLCUX = 0; 822 822 #if !QC_MVHEVC_B0046 823 823 Int iLastPosY = -1; 824 824 #endif 825 825 // for every CU in slice 826 826 UInt uiEncCUOrder; … … 833 833 TComDataCU*& pcCU = rpcPic->getCU( uiCUAddr ); 834 834 pcCU->initCU( rpcPic, uiCUAddr ); 835 835 #if !QC_MVHEVC_B0046 836 836 if ( m_pcRdCost->getUseRenModel() ) 837 837 { … … 847 847 } 848 848 } 849 849 #endif 850 850 // inherit from TR if necessary, select substream to use. 851 851 if( m_pcCfg->getUseSBACRD() ) -
trunk/source/Lib/TLibEncoder/TEncSlice.h
r189 r210 110 110 111 111 /// preparation of slice encoding (reference marking, QP and lambda) 112 #if VIDYO_VPS_INTEGRATION 112 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 113 113 Void initEncSlice ( TComPic* pcPic, Int iPOCLast, UInt uiPOCCurr, Int iNumPicRcvd, Int iGOPid, TComSlice*& rpcSlice, TComVPS* pVPS, TComSPS* pSPS, TComPPS *pPPS ); 114 114 #else -
trunk/source/Lib/TLibEncoder/TEncTop.cpp
r189 r210 375 375 376 376 // initialize encoder search class 377 #if DV_V_RESTRICTION_B0037 378 m_cSearch.init( this, &m_cTrQuant, m_iSearchRange, m_bipredSearchRange, m_bUseDisparitySearchRangeRestriction, m_iVerticalDisparitySearchRange, m_iFastSearch, 0, &m_cEntropyCoder, &m_cRdCost, getRDSbacCoder(), getRDGoOnSbacCoder() ); 379 #else 377 380 m_cSearch.init( this, &m_cTrQuant, m_iSearchRange, m_bipredSearchRange, m_iFastSearch, 0, &m_cEntropyCoder, &m_cRdCost, getRDSbacCoder(), getRDGoOnSbacCoder() ); 378 381 #endif 379 382 if(m_bUseALF) 380 383 { … … 766 769 m_cSPS.setUseDMM( m_bUseDMM ); 767 770 #endif 771 772 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 773 m_cSPS.setUseDMM34( m_bUseDMM34 ); 774 #endif 775 768 776 #if OL_QTLIMIT_PREDCODING_B0068 769 777 m_cSPS.setUseQTLPC( m_bUseQTLPC ); … … 785 793 else 786 794 { 795 #if QC_MVHEVC_B0046 796 m_cSPS.initMultiviewSPS ( m_viewId); 797 #else 787 798 m_cSPS.initMultiviewSPS ( m_viewId, m_iViewOrderIdx, m_uiCamParPrecision, m_bCamParInSliceHeader, m_aaiCodedScale, m_aaiCodedOffset ); 799 #endif 788 800 if( m_viewId ) 789 801 { … … 993 1005 Void TEncTop::selectReferencePictureSet(TComSlice* slice, Int POCCurr, Int GOPid,TComList<TComPic*>& listPic ) 994 1006 { 1007 #if QC_REM_IDV_B0046 1008 if( (slice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR ||slice->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA) && slice->getSPS()->getViewId() && POCCurr == 0 ) 1009 #else 995 1010 if( slice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDV && POCCurr == 0 ) 1011 #endif 996 1012 { 997 1013 TComReferencePictureSet* rps = slice->getLocalRPS();
Note: See TracChangeset for help on using the changeset viewer.