Changeset 210 in 3DVCSoftware
- Timestamp:
- 11 Dec 2012, 18:52:43 (12 years ago)
- Location:
- trunk
- Files:
-
- 59 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/CommonTestConditionsCfgs/baseCfg_2view+depth.cfg
r189 r210 195 195 InterViewSkip : 0 # interview SKIP mode 196 196 InterViewSkipLambdaScale : 8 # lambda scale for inter-view skip mode 197 DisparitySearchRangeRestriction : 0 # 0: No disparity restriction 1: Use disparity restriction 198 VerticalDisparitySearchRange : 56 # vertical disparity search range (in luma samples) 199 FCO : 0 # Flexible coding order flag in 3DV 200 FCOCodingOrder : T0D0D1T1 # Coding order for Flexible coding order in 3DV 197 201 198 202 … … 207 211 #========== view synthesis optimization (VSO) ========== 208 212 VSOConfig : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) I(s0.25 s0.5 s0.75)] # VSO configuration string 213 #VSOConfig : [ox0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) I(s0.25 s0.5 s0.75)] # VSO configuration string 209 214 WVSO : 1 # use of WVSO (Depth distortion metric with a weighted depth fidelity term) 210 215 VSOWeight : 10 # weight of VSO ( in SAD case, cf. squared in SSE case ) -
trunk/CommonTestConditionsCfgs/baseCfg_2view.cfg
r189 r210 189 189 InterViewSkip : 0 # interview SKIP mode 190 190 InterViewSkipLambdaScale : 8 # lambda scale for inter-view skip mode 191 191 DisparitySearchRangeRestriction : 0 # 0: No disparity restriction 1: Use disparity restriction 192 VerticalDisparitySearchRange : 56 # vertical disparity search range (in luma samples) 192 193 193 194 #========== depth coding tools ========== -
trunk/CommonTestConditionsCfgs/baseCfg_3view+depth.cfg
r189 r210 199 199 InterViewSkip : 0 # interview SKIP mode 200 200 InterViewSkipLambdaScale : 8 # lambda scale for inter-view skip mode 201 DisparitySearchRangeRestriction : 0 # 0: No disparity restriction 1: Use disparity restriction 202 VerticalDisparitySearchRange : 56 # vertical disparity search range (in luma samples) 203 FCO : 0 # Flexible coding order flag in 3DV 204 FCOCodingOrder : T0D0D1D2T1T2 # Coding order for Flexible coding order in 3DV 201 205 202 206 … … 211 215 #========== view synthesis optimization (VSO) ========== 212 216 VSOConfig : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string 217 #VSOConfig : [ox0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][ox2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string for FCO = 1 213 218 WVSO : 1 # use of WVSO (Depth distortion metric with a weighted depth fidelity term) 214 219 VSOWeight : 10 # weight of VSO ( in SAD case, cf. squared in SSE case ) -
trunk/CommonTestConditionsCfgs/baseCfg_3view.cfg
r189 r210 191 191 InterViewSkip : 0 # interview SKIP mode 192 192 InterViewSkipLambdaScale : 8 # lambda scale for inter-view skip mode 193 DisparitySearchRangeRestriction : 0 # 0: No disparity restriction 1: Use disparity restriction 194 VerticalDisparitySearchRange : 56 # vertical disparity search range (in luma samples) 193 195 194 196 -
trunk/cfg/encoder_mvd.cfg
r189 r210 198 198 InterViewSkip : 0 # interview SKIP mode 199 199 InterViewSkipLambdaScale : 8 # lambda scale for inter-view skip mode 200 DisparitySearchRangeRestriction : 0 # 0: No disparity restriction 1: Use disparity restriction 201 VerticalDisparitySearchRange : 56 # vertical disparity search range (in luma samples) 202 FCO : 0 # Flexible coding order flag in 3DV 203 FCOCodingOrder : T0D0D1T1D2T2 # Coding order for Flexible coding order in 3DV 200 204 201 205 … … 211 215 VSOConfig : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string (3 view) 212 216 VSOConfig : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) I(s0.25 s0.5 s0.75)] # VSO configuration string (2 view) 217 #VSOConfig : [ox0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][ox2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string 218 #VSOConfig : [ox0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) I(s0.25 s0.5 s0.75)] # VSO configuration string 213 219 WVSO : 1 # use of WVSO (Depth distortion metric with a weighted depth fidelity term) 214 220 VSOWeight : 10 # weight of VSO ( in SAD case, cf. squared in SSE case ) -
trunk/source/App/TAppDecoder/TAppDecTop.cpp
r189 r210 82 82 Void TAppDecTop::decode() 83 83 { 84 #if VIDYO_VPS_INTEGRATION 84 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 85 85 increaseNumberOfViews( 0, 0, 0 ); 86 86 #else … … 88 88 #endif 89 89 90 #if FLEX_CODING_ORDER_M23723 91 Int iDepthViewIdx = 0; 92 Int iTextureViewIdx=0; 93 Bool firstFrame=1; 94 Bool viewIdZero=true; 95 Int fcoIndex=0; //when the current frame is not first frame,use FCO_index stand for viewDepth. 96 #endif 97 90 98 #if SONY_COLPIC_AVAILABILITY 91 99 m_tDecTop[0]->setViewOrderIdx(0); … … 102 110 pcListPic[i] = NULL; 103 111 newPicture[i] = false; 112 #if FLEX_CODING_ORDER_M23723 113 #if FIX_FCO_COMP_WARNING 114 m_fcoOrder[i] = ' '; 115 #else 116 m_fcoOrder[i]=NULL; 117 #endif 118 #endif 119 104 120 } 105 121 … … 145 161 { 146 162 read(nalu, nalUnit); 163 #if QC_MVHEVC_B0046 164 viewDepthId = nalu.m_layerId; 165 Int depth = 0; 166 Int viewId = viewDepthId; 167 #else 147 168 #if VIDYO_VPS_INTEGRATION 148 169 Int viewId = 0; … … 156 177 depth = getVPSAccess()->getActiveVPS()->getDepthFlag(nalu.m_layerId); 157 178 } 179 #if FLEX_CODING_ORDER_M23723 180 if (viewId>0) 181 { 182 viewIdZero=false; 183 } 184 if (viewIdZero==false&&viewId==0) 185 { 186 firstFrame=0; //if viewId has been more than zero and now it set to zero again, we can see that it is not the first view 187 } 188 if (firstFrame) 189 { // if the current view is first frame, we set the viewDepthId as texture plus depth and get the FCO order 190 viewDepthId = iDepthViewIdx+iTextureViewIdx; 191 m_fcoViewDepthId=viewDepthId; 192 } 193 else 194 {//if current view is not first frame, we set the viewDepthId depended on the FCO order 195 viewDepthId=0; 196 if (depth) 197 { 198 for (fcoIndex=0;fcoIndex<2*MAX_VIEW_NUM;fcoIndex++ ) 199 { 200 if (m_fcoOrder[fcoIndex]=='D') 201 { 202 if (viewId==viewDepthId) 203 break; 204 else 205 viewDepthId++; 206 } 207 } 208 } 209 else 210 { 211 for (fcoIndex=0;fcoIndex<2*MAX_VIEW_NUM;fcoIndex++ ) 212 { 213 if (m_fcoOrder[fcoIndex]=='T') 214 { 215 if (viewId==viewDepthId) 216 break; 217 else 218 viewDepthId++; 219 } 220 } 221 } 222 223 viewDepthId=fcoIndex; 224 225 } 226 227 228 #else 158 229 viewDepthId = nalu.m_layerId; // coding order T0D0T1D1T2D2 230 #endif 231 159 232 #else 160 233 Int viewId = nalu.m_viewId; 161 234 Int depth = nalu.m_isDepth ? 1 : 0; 235 #if FLEX_CODING_ORDER_M23723 236 if (viewId>0) 237 { 238 viewIdZero=false; 239 } 240 if (viewIdZero==false&&viewId==0) 241 { 242 firstFrame=0; 243 } 244 if (firstFrame) 245 { 246 viewDepthId = iDepthViewIdx+iTextureViewIdx; 247 m_fcoViewDepthId=viewDepthId; 248 } 249 else 250 { 251 viewDepthId=0; 252 if (depth) 253 { 254 for (fcoIndex=0;fcoIndex<2*MAX_VIEW_NUM;fcoIndex++ ) 255 { 256 if (m_fcoOrder[fcoIndex]=='D') 257 { 258 if (viewId==viewDepthId) 259 break; 260 else 261 viewDepthId++; 262 } 263 } 264 } 265 else 266 { 267 for (fcoIndex=0;fcoIndex<2*MAX_VIEW_NUM;fcoIndex++ ) 268 { 269 if (m_fcoOrder[fcoIndex]=='T') 270 { 271 if (viewId==viewDepthId) 272 break; 273 else 274 viewDepthId++; 275 } 276 } 277 } 278 viewDepthId=fcoIndex; 279 } 280 #else 162 281 viewDepthId = viewId * 2 + depth; // coding order T0D0T1D1T2D2 163 282 #endif 164 283 #endif 284 #endif 165 285 newPicture[viewDepthId] = false; 166 286 if( viewDepthId >= m_tDecTop.size() ) 167 287 { 168 #if VIDYO_VPS_INTEGRATION 288 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 169 289 increaseNumberOfViews( viewDepthId, viewId, depth ); 170 290 #else … … 195 315 if( !(m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) ) 196 316 { 317 #if QC_MVHEVC_B0046 318 if(viewDepthId && m_tDecTop[viewDepthId]->m_bFirstNal== false) 319 { 320 m_tDecTop[viewDepthId]->m_bFirstNal = true; 321 ParameterSetManagerDecoder* pDecV0 = m_tDecTop[0]->xGetParaSetDec(); 322 m_tDecTop[viewDepthId]->xCopyVPS(pDecV0->getPrefetchedVPS(0)); 323 m_tDecTop[viewDepthId]->xCopySPS(pDecV0->getPrefetchedSPS(0)); 324 m_tDecTop[viewDepthId]->xCopyPPS(pDecV0->getPrefetchedPPS(0)); 325 } 326 #endif 197 327 newPicture[viewDepthId] = m_tDecTop[viewDepthId]->decode(nalu, m_iSkipFrame, m_pocLastDisplay[viewDepthId]); 198 328 if (newPicture[viewDepthId]) … … 209 339 { 210 340 previousPictureDecoded = true; 341 #if FLEX_CODING_ORDER_M23723 342 if (firstFrame) 343 { 344 if (depth) 345 { 346 iDepthViewIdx++; 347 m_fcoOrder[viewDepthId]='D'; 348 } 349 else 350 { 351 iTextureViewIdx++; 352 m_fcoOrder[viewDepthId]='T'; 353 } 354 } 355 356 #endif 211 357 } 212 358 } … … 218 364 if( pcListPic[viewDepthId] ) 219 365 { 366 #if QC_REM_IDV_B0046 367 Int iviewId = m_tDecTop[viewDepthId]->getViewId(); 368 if( newPicture[viewDepthId] && (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR || ((nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR && iviewId) && m_tDecTop[viewDepthId]->getNalUnitTypeBaseView() == NAL_UNIT_CODED_SLICE_IDR)) ) 369 #else 220 370 if( newPicture[viewDepthId] && (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR || (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDV && m_tDecTop[viewDepthId]->getNalUnitTypeBaseView() == NAL_UNIT_CODED_SLICE_IDR)) ) 371 #endif 221 372 { 222 373 xFlushOutput( pcListPic[viewDepthId], viewDepthId ); … … 275 426 m_tDecTop[viewDepthIdx]->destroy() ; 276 427 } 428 #if QC_MVHEVC_B0046 429 if(viewDepthIdx) 430 { 431 //Call clear function to remove the record, which has been freed during viewDepthIdx = 0 case. 432 m_tDecTop[viewDepthIdx]->xGetParaSetDec()->clearSPS(); 433 m_tDecTop[viewDepthIdx]->xGetParaSetDec()->clearVPS(); 434 m_tDecTop[viewDepthIdx]->xGetParaSetDec()->clearPPS(); 435 } 436 #endif 277 437 delete m_tDecTop[viewDepthIdx] ; 278 438 m_tDecTop[viewDepthIdx] = NULL ; … … 416 576 m_pocLastDisplay[viewDepthId] = -MAX_INT; 417 577 } 418 #if VIDYO_VPS_INTEGRATION 578 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 419 579 Void TAppDecTop::increaseNumberOfViews ( UInt layerId, UInt viewId, UInt isDepth ) 420 580 #else … … 422 582 #endif 423 583 { 424 #if VIDYO_VPS_INTEGRATION 584 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 425 585 Int newNumberOfViewDepth = layerId + 1; 426 586 #endif … … 429 589 m_outputBitDepth = g_uiBitDepth + g_uiBitIncrement; 430 590 } 431 #if !VIDYO_VPS_INTEGRATION 591 #if !VIDYO_VPS_INTEGRATION&!QC_MVHEVC_B0046 432 592 Int viewId = (newNumberOfViewDepth-1)>>1; // coding order T0D0T1D1T2D2 433 593 Bool isDepth = ((newNumberOfViewDepth % 2) == 0); // coding order T0D0T1D1T2D2 … … 442 602 m_tVideoIOYuvReconFile.push_back(new TVideoIOYuv); 443 603 Char buffer[4]; 444 #if VIDYO_VPS_INTEGRATION 604 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 445 605 sprintf(buffer,"_%i", viewId ); 446 606 #else … … 448 608 #endif 449 609 Char* nextFilename = NULL; 450 #if VIDYO_VPS_INTEGRATION 610 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 451 611 if( isDepth) 452 612 #else … … 463 623 xAppendToFileNameEnd( m_pchReconFile, buffer, nextFilename); 464 624 } 465 #if !VIDYO_VPS_INTEGRATION 625 #if !VIDYO_VPS_INTEGRATION&!QC_MVHEVC_B0046 466 626 if( isDepth || ( !isDepth && (m_tVideoIOYuvReconFile.size() % 2) == 1 ) ) 467 627 #endif … … 480 640 { 481 641 m_tDecTop.push_back(new TDecTop); 482 #if !VIDYO_VPS_INTEGRATION 642 #if !VIDYO_VPS_INTEGRATION&!QC_MVHEVC_B0046 483 643 if( isDepth || ( !isDepth && (m_tVideoIOYuvReconFile.size() % 2) == 1 ) ) 484 644 { … … 490 650 m_tDecTop.back()->setPictureDigestEnabled(m_pictureDigestEnabled); 491 651 m_tDecTop.back()->setCamParsCollector( &m_cCamParsCollector ); 492 #if !VIDYO_VPS_INTEGRATION 652 #if !VIDYO_VPS_INTEGRATION&!QC_MVHEVC_B0046 493 653 } 494 654 #endif … … 498 658 TDecTop* TAppDecTop::getTDecTop( Int viewId, Bool isDepth ) 499 659 { 660 #if FLEX_CODING_ORDER_M23723 661 Int viewnumber=0; 662 Int i=0; 663 Bool fcoFlag=0; 664 if (viewId>m_fcoViewDepthId) 665 { 666 return NULL; 667 } 668 else 669 { 670 if (isDepth) 671 { 672 for ( i=0; i<=m_fcoViewDepthId;i++) 673 { 674 if (m_fcoOrder[i]=='D') 675 { 676 if (viewnumber==viewId) 677 { 678 fcoFlag=1; 679 break; 680 } 681 else 682 viewnumber++; 683 } 684 } 685 } 686 else 687 { 688 for ( i=0; i<=m_fcoViewDepthId;i++) 689 { 690 if (m_fcoOrder[i]=='T') 691 { 692 if (viewnumber==viewId) 693 { 694 fcoFlag=1; 695 break; 696 } 697 else 698 viewnumber++; 699 } 700 } 701 } 702 if (fcoFlag) 703 { 704 return m_tDecTop[i]; 705 } 706 else 707 return NULL; 708 709 } 710 711 // coding order T0D0T1D1T2D2 712 #else 500 713 return m_tDecTop[(isDepth ? 1 : 0) + viewId * 2]; // coding order T0D0T1D1T2D2 714 #endif 715 501 716 } 502 717 … … 517 732 assert( ( viewId >= 0 ) ); 518 733 734 #if FLEX_CODING_ORDER_M23723 735 if (getTDecTop(viewId,isDepth)) 736 { 519 737 TComList<TComPic*>* apcListPic = getTDecTop( viewId, isDepth )->getListPic(); 520 738 TComPic* pcPic = NULL; … … 529 747 return pcPic; 530 748 } 749 else 750 return NULL; 751 #else 752 753 TComList<TComPic*>* apcListPic = getTDecTop( viewId, isDepth )->getListPic(); 754 TComPic* pcPic = NULL; 755 for( TComList<TComPic*>::iterator it=apcListPic->begin(); it!=apcListPic->end(); it++ ) 756 { 757 if( (*it)->getPOC() == poc ) 758 { 759 pcPic = *it; 760 break; 761 } 762 } 763 return pcPic; 764 #endif 765 } 531 766 //! \} -
trunk/source/App/TAppDecoder/TAppDecTop.h
r100 r210 71 71 Bool m_useDepth; 72 72 73 #if FLEX_CODING_ORDER_M23723 74 Int m_fcoViewDepthId; 75 Char m_fcoOrder[MAX_VIEW_NUM*2]; 76 #endif 77 73 78 FILE* m_pScaleOffsetFile; 74 79 CamParsCollector m_cCamParsCollector; 75 80 #if DEPTH_MAP_GENERATION 76 #if VIDYO_VPS_INTEGRATION 81 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 77 82 TComVPSAccess m_cVPSAccess; 78 83 #endif … … 88 93 Void destroy (); ///< destroy internal members 89 94 Void decode (); ///< main decoding function 90 #if VIDYO_VPS_INTEGRATION 95 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 91 96 Void increaseNumberOfViews (UInt layerId, UInt viewId, UInt isDepth); 92 97 #else -
trunk/source/App/TAppEncoder/TAppEncCfg.cpp
r189 r210 111 111 if (m_pchBitstreamFile != NULL) 112 112 free (m_pchBitstreamFile) ; 113 #if FLEX_CODING_ORDER_M23723 114 if (m_pchMVCJointCodingOrder != NULL) 115 { 116 free(m_pchMVCJointCodingOrder) ; 117 } 118 #endif 113 119 #if HHI_VSO 114 120 if ( m_pchVSOConfig != NULL) … … 203 209 string cfg_RowHeight; 204 210 string cfg_ScalingListFile; 211 212 #if FLEX_CODING_ORDER_M23723 213 string cfg_JointCodingOrdering; 214 #endif 215 205 216 po::Options opts; 206 217 opts.addOptions() … … 246 257 247 258 ("NumberOfViews", m_iNumberOfViews, 0, "Number of views") 259 #if FLEX_CODING_ORDER_M23723 260 ("FCO", m_b3DVFlexOrder, false, "flexible coding order flag" ) 261 ("FCOCodingOrder", cfg_JointCodingOrdering, string(""), "The coding order for joint texture-depth coding") 262 #endif 248 263 /* Unit definition parameters */ 249 264 ("MaxCUWidth", m_uiMaxCUWidth, 64u) … … 276 291 ("FastSearch", m_iFastSearch, 1, "0:Full search 1:Diamond 2:PMVFAST") 277 292 ("SearchRange,-sr",m_iSearchRange, 96, "motion search range") 293 #if DV_V_RESTRICTION_B0037 294 ("DisparitySearchRangeRestriction",m_bUseDisparitySearchRangeRestriction, false, "restrict disparity search range") 295 ("VerticalDisparitySearchRange",m_iVerticalDisparitySearchRange, 56, "vertical disparity search range") 296 #endif 278 297 ("BipredSearchRange", m_bipredSearchRange, 4, "motion search range for bipred refinement") 279 298 ("HadamardME", m_bUseHADME, true, "hadamard ME for fractional-pel") … … 329 348 /* Camera Paremetes */ 330 349 ("CameraParameterFile,cpf", m_pchCameraParameterFile, (Char *) 0, "Camera Parameter File Name") 350 #if QC_MVHEVC_B0046 351 ("BaseViewCameraNumbers" , m_aiVId, std::vector<Int>(1, MAX_VIEW_NUM), "Numbers of base views") 352 #endif 331 353 ("BaseViewCameraNumbers" , m_pchBaseViewCameraNumbers, (Char *) 0, "Numbers of base views") 332 354 … … 526 548 m_pchBitstreamFile = cfg_BitstreamFile.empty() ? NULL : strdup(cfg_BitstreamFile.c_str()); 527 549 m_pchdQPFile = cfg_dQPFile.empty() ? NULL : strdup(cfg_dQPFile.c_str()); 528 550 #if FLEX_CODING_ORDER_M23723 551 m_pchMVCJointCodingOrder= cfg_JointCodingOrdering.empty()?NULL:strdup(cfg_JointCodingOrdering.c_str()); 552 // If flexible order is enabled and if depth comes before the texture for a view, disable VSO 553 #if HHI_VSO && DISABLE_FCO_FOR_VSO 554 Bool depthComesFirst = false; 555 int iter = 0; 556 if ( m_b3DVFlexOrder ) 557 { 558 for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++) 559 { 560 iter = 0; 561 for ( Int ii=1; ii<12; ii+=2 ) 562 { 563 Int iViewIdxCfg = (Int)(m_pchMVCJointCodingOrder[ii]-'0'); 564 if ( iViewIdxCfg == iViewIdx ) 565 { 566 iter ++; 567 if ( m_pchMVCJointCodingOrder[ii-1]=='D' ) // depth comes first for this view 568 { 569 if(iter == 1) 570 { 571 depthComesFirst = true; 572 break; 573 } 574 } 575 else 576 { 577 assert(m_pchMVCJointCodingOrder[ii-1]=='T'); 578 } 579 } 580 } 581 } 582 } 583 if (depthComesFirst) 584 { 585 m_bUseVSO = false; 586 } 587 #endif 588 #endif 529 589 m_pchColumnWidth = cfg_ColumnWidth.empty() ? NULL: strdup(cfg_ColumnWidth.c_str()); 530 590 m_pchRowHeight = cfg_RowHeight.empty() ? NULL : strdup(cfg_RowHeight.c_str()); … … 786 846 } 787 847 #else 848 #if !QC_MVHEVC_B0046 788 849 m_cCameraData .init ( (UInt)m_iNumberOfViews, 789 850 m_uiInputBitDepth, … … 797 858 LOG2_DISP_PREC_LUT ); 798 859 #endif 860 #endif 799 861 800 862 801 863 // check validity of input parameters 802 864 xCheckParameter(); 865 #if !QC_MVHEVC_B0046 803 866 m_cCameraData.check( false, true ); 804 867 #endif 805 868 // print-out parameters 806 869 xPrintParameter(); … … 850 913 xConfirmPara( m_iFastSearch < 0 || m_iFastSearch > 2, "Fast Search Mode is not supported value (0:Full search 1:Diamond 2:PMVFAST)" ); 851 914 xConfirmPara( m_iSearchRange < 0 , "Search Range must be more than 0" ); 915 #if DV_V_RESTRICTION_B0037 916 xConfirmPara( m_iVerticalDisparitySearchRange <= 0 , "Vertical Disparity Search Range must be more than 0" ); 917 #endif 852 918 xConfirmPara( m_bipredSearchRange < 0 , "Search Range must be more than 0" ); 853 919 xConfirmPara( m_iMaxDeltaQP > 7, "Absolute Delta QP exceeds supported range (0 to 7)" ); … … 1595 1661 printf("Min PCM size : %d\n", 1 << m_uiPCMLog2MinSize); 1596 1662 printf("Motion search range : %d\n", m_iSearchRange ); 1663 #if DV_V_RESTRICTION_B0037 1664 printf("Disp search range restriction: %d\n", m_bUseDisparitySearchRangeRestriction ); 1665 printf("Vertical disp search range : %d\n", m_iVerticalDisparitySearchRange ); 1666 #endif 1597 1667 printf("Intra period : %d\n", m_iIntraPeriod ); 1598 1668 printf("Decoding refresh type : %d\n", m_iDecodingRefreshType ); … … 1745 1815 #if TMVP_DEPTH_SWITCH 1746 1816 printf("TMVP:%d ", (m_enableTMVP[1] ? 1 : 0) ); 1817 #endif 1818 #if FLEX_CODING_ORDER_M23723 1819 printf("FCO:%d ", (m_b3DVFlexOrder ? 1: 0)); 1820 1821 if(m_b3DVFlexOrder) 1822 { 1823 printf("CodingOrder: %s ", m_pchMVCJointCodingOrder); 1824 } 1747 1825 #endif 1748 1826 #if HHI_VSO -
trunk/source/App/TAppEncoder/TAppEncCfg.h
r189 r210 88 88 Int m_iNumberOfViews; ///< number Views to Encode 89 89 Bool m_bUsingDepthMaps; 90 91 #if FLEX_CODING_ORDER_M23723 92 Char* m_pchMVCJointCodingOrder; ///< texture-depth coding order 93 Bool m_b3DVFlexOrder; ///< flexible coding order flag 94 #endif 95 90 96 // coding structure 91 97 Int m_iIntraPeriod; ///< period of I-slice (random access period) … … 109 115 std::vector<Double> m_adQP; ///< QP value of key-picture (floating point) [0] video, [1] depth 110 116 std::vector<Int> m_aiQP; ///< QP value of key-picture (integer) [0] video, [1] depth 117 #if QC_MVHEVC_B0046 118 std::vector<Int> m_aiVId; ///< view id 119 #endif 111 120 Int m_aiTLayerQPOffset[MAX_TLAYER]; ///< QP offset corresponding to temporal layer depth 112 121 char* m_pchdQPFile; ///< QP offset for each slice (initialized from external file) … … 200 209 Int m_iFastSearch; ///< ME mode, 0 = full, 1 = diamond, 2 = PMVFAST 201 210 Int m_iSearchRange; ///< ME search range 211 #if DV_V_RESTRICTION_B0037 212 Bool m_bUseDisparitySearchRangeRestriction; ///< restrict vertical search range for inter-view prediction 213 Int m_iVerticalDisparitySearchRange; ///< ME vertical search range for inter-view prediction 214 #endif 202 215 Int m_bipredSearchRange; ///< ME search range for bipred refinement 203 216 Bool m_bUseFastEnc; ///< flag for using fast encoder setting … … 285 298 Char* m_pchCameraParameterFile; ///< camera parameter file 286 299 Char* m_pchBaseViewCameraNumbers; 300 #if !QC_MVHEVC_B0046 287 301 TAppComCamPara m_cCameraData; 288 302 #endif 289 303 Int m_iCodedCamParPrecision; ///< precision for coding of camera parameters 290 304 -
trunk/source/App/TAppEncoder/TAppEncTop.cpp
r189 r210 67 67 Void TAppEncTop::xInitLibCfg() 68 68 { 69 #if VIDYO_VPS_INTEGRATION 69 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 70 #if !QC_MVHEVC_B0046 70 71 UInt layerId = 0; 72 #endif 71 73 // TODO: fix the assumption here that the temporal structures are all equal across all layers??? 72 74 m_cVPS.setMaxTLayers( m_maxTempLayer[0] ); 75 #if QC_MVHEVC_B0046 76 m_cVPS.setMaxLayers( m_iNumberOfViews ); 77 #else 73 78 m_cVPS.setMaxLayers( m_iNumberOfViews * (m_bUsingDepthMaps ? 2:1) ); 79 #endif 74 80 for(Int i = 0; i < MAX_TLAYER; i++) 75 81 { … … 101 107 m_acTEncTopList[iViewIdx]->setViewId ( iViewIdx ); 102 108 m_acTEncTopList[iViewIdx]->setIsDepth ( false ); 109 #if QC_MVHEVC_B0046 110 m_acTEncTopList[iViewIdx]->setLayerId ( iViewIdx ); 111 m_cVPS.setViewId ( m_aiVId[ iViewIdx ], iViewIdx ); 112 #else 103 113 m_acTEncTopList[iViewIdx]->setViewOrderIdx ( m_cCameraData.getViewOrderIndex()[ iViewIdx ] ); 104 114 #if VIDYO_VPS_INTEGRATION … … 117 127 m_acTEncTopList[iViewIdx]->setCodedScale ( m_cCameraData.getCodedScale () ); 118 128 m_acTEncTopList[iViewIdx]->setCodedOffset ( m_cCameraData.getCodedOffset () ); 129 #endif 119 130 120 131 //====== Coding Structure ======== … … 170 181 m_acTEncTopList[iViewIdx]->setSearchRange ( m_iSearchRange ); 171 182 m_acTEncTopList[iViewIdx]->setBipredSearchRange ( m_bipredSearchRange ); 172 183 #if DV_V_RESTRICTION_B0037 184 m_acTEncTopList[iViewIdx]->setUseDisparitySearchRangeRestriction ( m_bUseDisparitySearchRangeRestriction ); 185 m_acTEncTopList[iViewIdx]->setVerticalDisparitySearchRange( m_iVerticalDisparitySearchRange ); 186 #endif 173 187 //====== Quality control ======== 174 188 m_acTEncTopList[iViewIdx]->setMaxDeltaQP ( m_iMaxDeltaQP ); … … 386 400 for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++) 387 401 { 402 403 #if FLEX_CODING_ORDER_M23723 404 // Detect whether depth comes before than texture for this view 405 Bool isDepthFirst = false; 406 if ( m_b3DVFlexOrder ) 407 { 408 for ( Int ii=1; ii<12; ii+=2 ) 409 { 410 Int iViewIdxCfg = (Int)(m_pchMVCJointCodingOrder[ii]-'0'); 411 if ( iViewIdxCfg == iViewIdx ) 412 { 413 if ( m_pchMVCJointCodingOrder[ii-1]=='D' ) // depth comes first for this view 414 { 415 isDepthFirst = true; 416 } 417 else 418 { 419 assert(m_pchMVCJointCodingOrder[ii-1]=='T'); 420 } 421 break; 422 } 423 } 424 } 425 #endif 426 388 427 m_depthFrameRcvd.push_back(0); 389 428 m_acTEncDepthTopList.push_back(new TEncTop); … … 406 445 m_acTEncDepthTopList[iViewIdx]->setViewId ( iViewIdx ); 407 446 m_acTEncDepthTopList[iViewIdx]->setIsDepth ( true ); 447 #if QC_MVHEVC_B0046 448 m_acTEncDepthTopList[iViewIdx]->setLayerId ( iViewIdx ); 449 #else 408 450 m_acTEncDepthTopList[iViewIdx]->setViewOrderIdx ( m_cCameraData.getViewOrderIndex()[ iViewIdx ] ); 451 #endif 409 452 #if VIDYO_VPS_INTEGRATION 410 453 layerId = iViewIdx * 2 + 1; … … 473 516 m_acTEncDepthTopList[iViewIdx]->setSearchRange ( m_iSearchRange ); 474 517 m_acTEncDepthTopList[iViewIdx]->setBipredSearchRange ( m_bipredSearchRange ); 475 518 #if DV_V_RESTRICTION_B0037 519 m_acTEncDepthTopList[iViewIdx]->setUseDisparitySearchRangeRestriction ( m_bUseDisparitySearchRangeRestriction ); 520 m_acTEncDepthTopList[iViewIdx]->setVerticalDisparitySearchRange( m_iVerticalDisparitySearchRange ); 521 #endif 476 522 //====== Quality control ======== 477 523 m_acTEncDepthTopList[iViewIdx]->setMaxDeltaQP ( m_iMaxDeltaQP ); … … 661 707 m_acTEncDepthTopList[iViewIdx]->setUseDMM ( m_bUseDMM ); 662 708 #endif 709 #if FLEX_CODING_ORDER_M23723 && HHI_DMM_PRED_TEX 710 m_acTEncDepthTopList[iViewIdx]->setUseDMM34( (m_b3DVFlexOrder && isDepthFirst) ? false : m_bUseDMM ); 711 #endif 712 663 713 #if OL_QTLIMIT_PREDCODING_B0068 664 714 m_acTEncDepthTopList[iViewIdx]->setUseQTLPC (m_bUseQTLPC); 665 715 #endif 666 716 #if HHI_MPI 717 #if FLEX_CODING_ORDER_M23723 718 m_acTEncDepthTopList[iViewIdx]->setUseMVI( (m_b3DVFlexOrder && isDepthFirst) ? false : m_bUseMVI ); 719 #else 667 720 m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI ); 721 #endif 668 722 #endif 669 723 #if RWTH_SDC_DLT_B0036 … … 821 875 { 822 876 m_acTEncTopList[iViewIdx]->init( this ); 877 #if QC_MVHEVC_B0046 878 //set setNumDirectRefLayer 879 Int iNumDirectRef = m_acTEncTopList[iViewIdx]->getSPS()->getNumberOfUsableInterViewRefs(); 880 m_acTEncTopList[iViewIdx]->getEncTop()->getVPS()->setNumDirectRefLayer(iNumDirectRef, iViewIdx); 881 for(Int iNumIvRef = 0; iNumIvRef < iNumDirectRef; iNumIvRef ++) 882 { 883 Int iLayerId = m_acTEncTopList[iViewIdx]->getSPS()->getUsableInterViewRef(iNumIvRef); 884 m_acTEncTopList[iViewIdx]->getEncTop()->getVPS()->setDirectRefLayerId( iLayerId + iViewIdx, iViewIdx, iNumIvRef); 885 } 886 #endif 823 887 } 824 888 for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++) … … 862 926 TComPicYuv* pcPicYuvOrg = new TComPicYuv; 863 927 TComPicYuv* pcDepthPicYuvOrg = new TComPicYuv; 928 #if !QC_MVHEVC_B0046 864 929 TComPicYuv* pcPdmDepthOrg = new TComPicYuv; 930 #endif 865 931 TComPicYuv* pcPicYuvRec = NULL; 866 932 TComPicYuv* pcDepthPicYuvRec = NULL; … … 963 1029 { 964 1030 Int iNumEncoded = 0; 1031 #if !QC_MVHEVC_B0046 965 1032 UInt iNextPoc = m_acTEncTopList[0] -> getFrameId( gopId ); 966 1033 if ( iNextPoc < m_iFrameToBeEncoded ) … … 968 1035 m_cCameraData.update( iNextPoc ); 969 1036 } 1037 #endif 1038 1039 #if FLEX_CODING_ORDER_M23723 1040 if (m_b3DVFlexOrder) 1041 { 1042 Int iNumDepthEncoded = 0; 1043 iNumEncoded = 0; 1044 Int i=0; 1045 Int iViewIdx=0; 1046 Int iNumberofDepthViews = m_bUsingDepthMaps?m_iNumberOfViews:0; 1047 for (Int j=0; j < (m_iNumberOfViews+ iNumberofDepthViews); j++ ) 1048 { 1049 if (m_pchMVCJointCodingOrder[i]=='T') 1050 { 1051 1052 i++; 1053 assert(isdigit(m_pchMVCJointCodingOrder[i])); 1054 iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0'); 1055 1056 m_acTEncTopList[iViewIdx]->encode( eos[iViewIdx], pcPicYuvOrg, *m_picYuvRec[iViewIdx], outputAccessUnits, iNumEncoded, gopId ); 1057 xWriteOutput(bitstreamFile, iNumEncoded, outputAccessUnits, iViewIdx, false); 1058 outputAccessUnits.clear(); 1059 i++; 1060 } 1061 else if ( m_pchMVCJointCodingOrder[i] == 'D') 1062 { 1063 1064 i++; 1065 if( m_bUsingDepthMaps ) 1066 { 1067 assert(isdigit(m_pchMVCJointCodingOrder[i])); 1068 iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0'); 1069 #if SAIT_VSO_EST_A0033 1070 if( m_bUseVSO && iNextPoc < m_iFrameToBeEncoded ) 1071 { 1072 m_cCameraData.xSetDispCoeff( iNextPoc, iViewIdx ); 1073 m_acTEncDepthTopList[iViewIdx]->setDispCoeff( m_cCameraData.getDispCoeff() ); 1074 } 1075 #endif 1076 m_acTEncDepthTopList[iViewIdx]->encode( depthEos[iViewIdx], pcDepthPicYuvOrg, *m_picYuvDepthRec[iViewIdx], outputAccessUnits, iNumDepthEncoded, gopId ); 1077 xWriteOutput(bitstreamFile, iNumDepthEncoded, outputAccessUnits, iViewIdx, true); 1078 outputAccessUnits.clear(); 1079 i++; 1080 } 1081 } 1082 } 1083 } 1084 else 1085 { 1086 1087 #endif 970 1088 for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ ) 971 1089 { … … 991 1109 } 992 1110 } 1111 1112 #if FLEX_CODING_ORDER_M23723 1113 } 1114 #endif 1115 993 1116 #if HHI_INTERVIEW_SKIP || HHI_INTER_VIEW_MOTION_PRED || HHI_INTER_VIEW_RESIDUAL_PRED 994 1117 for( Int iViewIdx = 0; iViewIdx < m_iNumberOfViews; iViewIdx++ ) … … 1023 1146 pcDepthPicYuvOrg = NULL; 1024 1147 1148 #if !QC_MVHEVC_B0046 1149 #if FIX_DEL_NULLPTR 1150 if ( pcPdmDepthOrg != NULL && m_uiMultiviewMvRegMode ) 1151 #else 1025 1152 if ( pcPdmDepthOrg != NULL ) 1153 #endif 1026 1154 { 1027 1155 pcPdmDepthOrg->destroy(); … … 1029 1157 pcPdmDepthOrg = NULL; 1030 1158 }; 1031 1159 #endif 1032 1160 1033 1161 for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ ) … … 1233 1361 case NAL_UNIT_CODED_SLICE: 1234 1362 #if H0566_TLA 1363 #if !QC_REM_IDV_B0046 1235 1364 case NAL_UNIT_CODED_SLICE_IDV: 1365 #endif 1236 1366 case NAL_UNIT_CODED_SLICE_TLA: 1237 1367 case NAL_UNIT_CODED_SLICE_CRA: -
trunk/source/App/TAppEncoder/TAppEncTop.h
r189 r210 87 87 #endif 88 88 89 #if VIDYO_VPS_INTEGRATION 89 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 90 90 TComVPS m_cVPS; 91 91 #endif … … 139 139 #endif 140 140 141 #if QC_MVHEVC_B0046 142 TComVPS* getVPS() { return &m_cVPS; } 143 #endif 141 144 #if VIDYO_VPS_INTEGRATION 142 145 TComVPS* getVPS() { return &m_cVPS; } -
trunk/source/App/TAppRenderer/RendererMain.cpp
r100 r210 43 43 int main(int argc, char* argv[]) 44 44 { 45 #if !QC_MVHEVC_B0046 45 46 TAppRendererTop cTAppRendererTop; 46 47 … … 78 79 79 80 return 0; 81 #endif 80 82 } 81 83 -
trunk/source/App/TAppRenderer/TAppRendererCfg.cpp
r189 r210 59 59 // Constructor / destructor / initialization / destroy 60 60 // ==================================================================================================================== 61 61 #if !QC_MVHEVC_B0046 62 62 TAppRendererCfg::TAppRendererCfg() 63 63 { … … 516 516 g_uiIBDI_MAX = ((1<<(g_uiBitDepth+g_uiBitIncrement))-1); 517 517 } 518 #endif -
trunk/source/App/TAppRenderer/TAppRendererCfg.h
r100 r210 50 50 #include <string> 51 51 #include <vector> 52 52 #if !QC_MVHEVC_B0046 53 53 // ==================================================================================================================== 54 54 // Class definition … … 134 134 135 135 136 136 #endif 137 137 #endif // __TAppRENDERERCFG__ 138 138 -
trunk/source/App/TAppRenderer/TAppRendererTop.cpp
r189 r210 45 45 // Constructor / destructor / initialization / destroy 46 46 // ==================================================================================================================== 47 47 #if !QC_MVHEVC_B0046 48 48 TAppRendererTop::TAppRendererTop() 49 49 { … … 1034 1034 1035 1035 } 1036 #endif -
trunk/source/App/TAppRenderer/TAppRendererTop.h
r100 r210 50 50 #include "../../Lib/TLibRenderer/TRenModel.h" 51 51 52 52 #if !QC_MVHEVC_B0046 53 53 // ==================================================================================================================== 54 54 // Class definition … … 87 87 };// END CLASS DEFINITION TAppRendererTop 88 88 89 #endif // __TAppRendererTOP__89 #endif 90 90 91 #endif -
trunk/source/Lib/TLibCommon/CommonDef.h
r208 r210 58 58 59 59 #define HM_VERSION "6.1" 60 #define NV_VERSION "5.0 .1" ///< Current software version60 #define NV_VERSION "5.0" ///< Current software version 61 61 62 62 // ==================================================================================================================== … … 185 185 // VPS constants 186 186 // ==================================================================================================================== 187 #if QC_MVHEVC_B0046 188 #define MAX_LAYER_NUM MAX_VIEW_NUM 189 #endif 187 190 #if VIDYO_VPS_INTEGRATION 188 191 #define MAX_LAYER_NUM MAX_VIEW_NUM … … 480 483 NAL_UNIT_CODED_SLICE, 481 484 #if H0566_TLA 485 #if QC_REM_IDV_B0046 486 NAL_UNIT_RESERVED, 487 #else 482 488 NAL_UNIT_CODED_SLICE_IDV, 489 #endif 483 490 NAL_UNIT_CODED_SLICE_TLA, 484 491 NAL_UNIT_CODED_SLICE_CRA, … … 508 515 NAL_UNIT_RESERVED_23, 509 516 NAL_UNIT_UNSPECIFIED_24, 510 #if VIDYO_VPS_INTEGRATION 517 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 511 518 NAL_UNIT_VPS, 512 519 #else -
trunk/source/Lib/TLibCommon/NAL.h
r100 r210 51 51 NalRefIdc m_nalRefIDC; ///< nal_ref_idc 52 52 #endif 53 #if VIDYO_VPS_INTEGRATION 53 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 54 54 unsigned m_layerId; 55 55 unsigned m_temporalId; ///< temporal_id … … 69 69 NalUnitType nalUnitType, 70 70 Bool nalRefFlag, 71 #if !VIDYO_VPS_INTEGRATION 71 #if !VIDYO_VPS_INTEGRATION & !QC_MVHEVC_B0046 72 72 Int viewId, 73 73 Bool isDepth, … … 78 78 :m_nalUnitType (nalUnitType) 79 79 ,m_nalRefFlag (nalRefFlag) 80 #if !VIDYO_VPS_INTEGRATION 80 #if !VIDYO_VPS_INTEGRATION & !QC_MVHEVC_B0046 81 81 ,m_viewId (viewId) 82 82 ,m_isDepth (isDepth) … … 139 139 return m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR 140 140 #if H0566_TLA 141 #if !QC_REM_IDV_B0046 141 142 || m_nalUnitType == NAL_UNIT_CODED_SLICE_IDV 143 #endif 142 144 || m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA 143 145 || m_nalUnitType == NAL_UNIT_CODED_SLICE_TLA -
trunk/source/Lib/TLibCommon/TComDataCU.cpp
r205 r210 4331 4331 { 4332 4332 // col [2] 4333 #if !QC_TMVP_IDX_MOD_B0046 4333 4334 Int iRefIdxSkip[2] = {-1, -1}; 4334 4335 for (Int i=0; i<2; i++) … … 4350 4351 iRefIdxSkip[i] = (iRefIdxTmp != -1) ? iRefIdxTmp : 0; 4351 4352 } 4353 #endif 4352 4354 //>> MTK colocated-RightBottom 4353 4355 UInt uiPartIdxRB; … … 4361 4363 4362 4364 TComMv cColMv; 4365 #if QC_TMVP_IDX_MOD_B0046 4366 Int iRefIdx = 0; 4367 #else 4363 4368 Int iRefIdx; 4364 4369 #endif 4365 4370 if ( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdxTmp] + m_pcPic->getMinCUWidth() ) >= m_pcSlice->getSPS()->getPicWidthInLumaSamples() ) // image boundary check 4366 4371 { … … 4395 4400 } 4396 4401 } 4402 #if !QC_TMVP_IDX_MOD_B0046 4397 4403 iRefIdx = iRefIdxSkip[0]; 4398 4404 #else 4405 iRefIdx = 0; 4406 #endif 4399 4407 Bool bExistMV = false; 4400 4408 UInt uiPartIdxCenter; … … 4414 4422 if ( getSlice()->isInterB() ) 4415 4423 { 4424 #if !QC_TMVP_IDX_MOD_B0046 4416 4425 iRefIdx = iRefIdxSkip[1]; 4426 #else 4427 iRefIdx = 0; 4428 #endif 4417 4429 bExistMV = uiLCUIdx >= 0 && xGetColMVP( REF_PIC_LIST_1, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx); 4418 4430 if( bExistMV == false ) … … 6427 6439 if( pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) >= 0 ) 6428 6440 { 6441 #if QC_IV_AS_LT_B0046 6442 Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic( eRefPicList, iRefIdx)->getIsLongTerm(); 6443 Bool bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm(); 6444 iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ); 6445 if ( (bIsCurrRefLongTerm == bIsNeibRefLongTerm) && (iNeibRefPOC == iCurrRefPOC) ) 6446 #else 6429 6447 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6430 6448 { … … 6433 6451 iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ); 6434 6452 if( iNeibRefPOC == iCurrRefPOC ) // Same Reference Frame But Diff List// 6453 #endif 6435 6454 { 6436 6455 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx); … … 6569 6588 Int iNeibRefPOC; 6570 6589 6590 #if QC_IV_AS_LT_B0046 6591 Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic( eRefPicList, iRefIdx)->getIsLongTerm(); 6592 Bool bIsNeibRefLongTerm = false; 6593 #endif 6571 6594 if( pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) >= 0 ) 6572 6595 { 6573 6596 iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ); 6597 #if QC_IV_AS_LT_B0046 6598 bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm() ; 6599 if ( (bIsCurrRefLongTerm == bIsNeibRefLongTerm) && (iNeibRefPOC == iCurrRefPOC) ) 6600 #else 6574 6601 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6575 6602 return false; 6576 6603 if( iNeibRefPOC == iCurrRefPOC ) // Same Reference Frame But Diff List// 6604 #endif 6577 6605 { 6578 6606 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx); … … 6592 6620 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx); 6593 6621 TComMv rcMv; 6594 6622 #if QC_IV_AS_LT_B0046 6623 bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx))->getIsLongTerm(); 6624 if ( bIsCurrRefLongTerm == bIsNeibRefLongTerm ) 6625 { 6626 #else 6595 6627 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6596 6628 { 6597 6629 return false; 6598 6630 } 6599 6631 #endif 6600 6632 Int iScale = xGetDistScaleFactor( iCurrPOC, iCurrRefPOC, iNeibPOC, iNeibRefPOC ); 6601 6633 if ( iScale == 4096 ) … … 6612 6644 pInfo->m_acMvCand[ pInfo->iN++] = rcMv; 6613 6645 return true; 6646 #if QC_IV_AS_LT_B0046 6647 } 6648 #endif 6614 6649 } 6615 6650 //---------------------- V2(END) --------------------// … … 6619 6654 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx); 6620 6655 TComMv rcMv; 6621 6656 #if QC_IV_AS_LT_B0046 6657 bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm(); ; 6658 if ( bIsCurrRefLongTerm == bIsNeibRefLongTerm ) 6659 { 6660 #else 6622 6661 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6623 6662 { 6624 6663 return false; 6625 6664 } 6626 6665 #endif 6627 6666 Int iScale = xGetDistScaleFactor( iCurrPOC, iCurrRefPOC, iNeibPOC, iNeibRefPOC ); 6628 6667 if ( iScale == 4096 ) … … 6639 6678 pInfo->m_acMvCand[ pInfo->iN++] = rcMv; 6640 6679 return true; 6680 #if QC_IV_AS_LT_B0046 6681 } 6682 #endif 6641 6683 } 6642 6684 //---------------------- V3(END) --------------------// … … 6749 6791 Int iColPOC, iColRefPOC, iCurrPOC, iCurrRefPOC, iScale; 6750 6792 #if SONY_COLPIC_AVAILABILITY 6793 #if QC_IV_AS_LT_B0046 6794 Int iColViewOrderIdx, iCurrViewOrderIdx, iCurrRefViewOrderIdx; 6795 #else 6751 6796 Int iColViewOrderIdx, iColRefViewOrderIdx, iCurrViewOrderIdx, iCurrRefViewOrderIdx; 6797 #endif 6752 6798 #endif 6753 6799 TComMv cColMv; … … 6780 6826 } 6781 6827 6782 #if !SONY_COLPIC_AVAILABILITY 6828 #if !SONY_COLPIC_AVAILABILITY&!QC_IV_AS_LT_B0046 6783 6829 if( m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getViewId() != m_pcSlice->getViewId() ) 6784 6830 return false; … … 6808 6854 iColRefPOC = pColCU->getSlice()->getRefPOC(eColRefPicList, iColRefIdx); 6809 6855 6856 #if !QC_IV_AS_LT_B0046 6810 6857 #if SONY_COLPIC_AVAILABILITY 6811 6858 iColRefViewOrderIdx = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewOrderIdx(); … … 6816 6863 } 6817 6864 #endif 6818 6865 #else 6866 Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getIsLongTerm(); 6867 Bool bIsColRefLongTerm = pColCU->getSlice()->getWasLongTerm(eColRefPicList, iColRefIdx); 6868 if(bIsCurrRefLongTerm != bIsColRefLongTerm) 6869 { 6870 assert( ((iColPOC == iColRefPOC)&&(iCurrPOC != iCurrRefPOC))||((iColPOC != iColRefPOC)&&(iCurrPOC == iCurrRefPOC))); 6871 return false; 6872 } 6873 #endif 6819 6874 cColMv = pColCU->getCUMvField(eColRefPicList)->getMv(uiAbsPartAddr); 6820 6875 6821 6876 iCurrRefPOC = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getPOC(); 6877 #if QC_IV_AS_LT_B0046 6878 { 6879 assert( ((iColPOC != iColRefPOC)&&(iCurrPOC != iCurrRefPOC))||((iColPOC == iColRefPOC)&&(iCurrPOC == iCurrRefPOC))); 6880 if(!bIsCurrRefLongTerm) //short-term 6881 { 6882 iScale = xGetDistScaleFactor(iCurrPOC, iCurrRefPOC, iColPOC, iColRefPOC); 6883 if ( iScale == 4096 ) 6884 { 6885 rcMv = cColMv; 6886 } 6887 else 6888 { 6889 rcMv = cColMv.scaleMv( iScale ); 6890 } 6891 }else 6892 #if QC_MVHEVC_B0046 6893 rcMv = cColMv; //inter-view 6894 #else 6895 { 6896 #if SONY_COLPIC_AVAILABILITY 6897 Int iColRefViewOrderIdx = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewOrderIdx(); 6898 iScale = xGetDistScaleFactor(iCurrViewOrderIdx, iCurrRefViewOrderIdx, iColViewOrderIdx, iColRefViewOrderIdx); 6899 if ( iScale == 4096 ) 6900 { 6901 rcMv = cColMv; 6902 } 6903 else 6904 { 6905 rcMv = cColMv.scaleMv( iScale ); 6906 } 6907 #else 6908 return false; 6909 #endif 6910 } 6911 #endif 6912 } 6913 #else 6822 6914 #if SONY_COLPIC_AVAILABILITY 6823 6915 iScale = 0; … … 6841 6933 rcMv = cColMv.scaleMv( iScale ); 6842 6934 } 6843 6935 #endif 6844 6936 return true; 6845 6937 } -
trunk/source/Lib/TLibCommon/TComDepthMapGenerator.h
r189 r210 239 239 Bool m_bDecoder; 240 240 TComPrediction* m_pcPrediction; 241 #if VIDYO_VPS_INTEGRATION 241 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 242 242 TComVPSAccess* m_pcVPSAccess; 243 243 #endif -
trunk/source/Lib/TLibCommon/TComPic.cpp
r189 r210 519 519 UInt uiTempLayer = currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice()->getTLayer(); 520 520 Int iTempDiff = (iTempPoc > iPOCCurr) ? (iTempPoc - iPOCCurr): (iPOCCurr - iTempPoc); 521 #if QC_REM_IDV_B0046 522 TComSlice* refSlice = currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice(); 523 bRAP = (refSlice->getSPS()->getViewId() && (refSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || refSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA))? 1: 0; 524 #else 521 525 bRAP = (currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDV? 1:0); 526 #endif 522 527 if( bRAP) 523 528 { -
trunk/source/Lib/TLibCommon/TComPic.h
r189 r210 140 140 TComSlice* getSlice(Int i) { return m_apcPicSym->getSlice(i); } 141 141 TComSlice* getCurrSlice() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx); } 142 #if VIDYO_VPS_INTEGRATION 142 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 143 143 TComVPS* getVPS() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getVPS(); } 144 144 #endif -
trunk/source/Lib/TLibCommon/TComPrediction.cpp
r189 r210 924 924 } 925 925 #endif 926 #if !QC_MVHEVC_B0046 926 927 Int ixFrac = iHor & 0x3; 927 928 Int iyFrac = iVer & 0x3; 929 #endif 928 930 Int iRefOffset = ( iHor >> 2 ) + ( iVer >> 2 ) * iRefStride; 929 931 #endif -
trunk/source/Lib/TLibCommon/TComPrediction.h
r189 r210 105 105 #else 106 106 Void xPredInterLumaBlk ( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi ); 107 Void xPredInterChromaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi ); 107 108 #endif 108 Void xPredInterChromaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi );109 109 Void xWeightedAverage ( TComDataCU* pcCU, TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, Int iRefIdx0, Int iRefIdx1, UInt uiPartAddr, Int iWidth, Int iHeight, TComYuv*& rpcYuvDst ); 110 110 -
trunk/source/Lib/TLibCommon/TComSlice.cpp
r189 r210 44 44 45 45 TComSlice::TComSlice() 46 #if QC_MVHEVC_B0046 47 : m_iPPSId ( 0 ) 48 #else 46 49 : m_iPPSId ( -1 ) 50 #endif 47 51 , m_iPOC ( 0 ) 48 52 , m_iLastIDR ( 0 ) … … 142 146 resetWpScalingLC(m_weightPredTableLC); 143 147 initWpAcDcParam(); 148 #if QC_IV_AS_LT_B0046 149 for(Int iNumCount = 0; iNumCount < MAX_NUM_REF+1; iNumCount++) 150 { 151 m_bWasLongTerm[0][iNumCount] = false; 152 m_bWasLongTerm[1][iNumCount] = false; 153 } 154 #endif 144 155 } 145 156 … … 472 483 { 473 484 pcRefPic = xGetInterViewRefPic( rapcInterViewRefPics, getViewId() + m_pcSPS->getUsableInterViewRef(i) ); 485 #if QC_IV_AS_LT_B0046 486 pcRefPic->setIsLongTerm( 1 ); 487 #else 474 488 pcRefPic->setIsLongTerm( 0 ); 489 #endif 475 490 pcRefPic->getPicYuvRec()->extendPicBorder(); 476 491 RefPicSetIvCurr[NumPocIvCurr] = pcRefPic; … … 513 528 { 514 529 m_apcRefPicList[0][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL0() ? refPicListTemp0[ m_RefPicListModification.getRefPicSetIdxL0(cIdx) ] : refPicListTemp0[cIdx]; 530 #if QC_IV_AS_LT_B0046 531 setWasLongTerm(m_apcRefPicList[0][cIdx]->getIsLongTerm(), REF_PIC_LIST_0, cIdx); 532 #endif 515 533 } 516 534 if( m_eSliceType == P_SLICE ) … … 524 542 { 525 543 m_apcRefPicList[1][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL1() ? refPicListTemp1[ m_RefPicListModification.getRefPicSetIdxL1(cIdx) ] : refPicListTemp1[cIdx]; 544 #if QC_IV_AS_LT_B0046 545 setWasLongTerm(m_apcRefPicList[1][cIdx]->getIsLongTerm(), REF_PIC_LIST_1, cIdx); 546 #endif 526 547 } 527 548 } … … 876 897 for(i=0;i<pReferencePictureSet->getNumberOfPositivePictures()+pReferencePictureSet->getNumberOfNegativePictures();i++) 877 898 { 899 #if QC_IV_AS_LT_B0046 900 if( rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getPOC() + pReferencePictureSet->getDeltaPOC(i)) 901 #else 878 902 if(!rpcPic->getIsLongTerm() && rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getPOC() + pReferencePictureSet->getDeltaPOC(i)) 903 #endif 879 904 { 880 905 isReference = 1; … … 886 911 for(;i<pReferencePictureSet->getNumberOfPictures();i++) 887 912 { 913 #if QC_IV_AS_LT_B0046 914 if( (rpcPic->getPicSym()->getSlice(0)->getPOC()%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC())) == pReferencePictureSet->getPOC(i)%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC())) 915 #else 888 916 if(rpcPic->getIsLongTerm() && (rpcPic->getPicSym()->getSlice(0)->getPOC()%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC())) == pReferencePictureSet->getPOC(i)%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC())) 917 #endif 889 918 { 890 919 isReference = 1; … … 1390 1419 // Video parameter set (VPS) 1391 1420 // ------------------------------------------------------------------------------------------------ 1421 #if QC_MVHEVC_B0046 1422 TComVPS::TComVPS() 1423 : m_VPSId ( 0) 1424 , m_uiMaxTLayers ( 1) 1425 , m_uiMaxLayers ( 1) 1426 , m_bTemporalIdNestingFlag (false) 1427 , m_uiNumHRDParameter ( 0) 1428 , m_numAddiLayerOperationPoints (2) 1429 , m_numAddiProLevelSets ( 1) 1430 { 1431 for( Int i = 0; i < MAX_LAYER_NUM; i++) 1432 { 1433 m_numOpLayerIdMinus1[i] = 0; 1434 if(i) 1435 m_numDirectRefLayer[i] = 1; 1436 else 1437 m_numDirectRefLayer[i] = 0; 1438 for( Int j = 0; j < MAX_LAYER_NUM; j++) 1439 { 1440 m_numDirectRefID[i][j] = 0; 1441 m_numOpLayerId[i][j] = 0; 1442 } 1443 m_uiViewId[i] = 0; 1444 m_iViewOrderIdx[i] = 0; 1445 } 1446 1447 for( Int i = 0; i < MAX_TLAYER; i++) 1448 { 1449 m_numReorderPics[i] = 0; 1450 m_uiMaxDecPicBuffering[i] = 0; 1451 m_uiMaxLatencyIncrease[i] = 0; 1452 } 1453 } 1454 1455 TComVPS::~TComVPS() 1456 { 1457 } 1458 #else 1392 1459 #if VIDYO_VPS_INTEGRATION 1393 1460 TComVPS::TComVPS() … … 1422 1489 1423 1490 #endif 1424 1491 #endif 1425 1492 1426 1493 // ------------------------------------------------------------------------------------------------ … … 1429 1496 1430 1497 TComSPS::TComSPS() 1431 #if VIDYO_VPS_INTEGRATION 1498 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1432 1499 : m_VPSId ( 0) 1433 1500 , m_SPSId ( 0) … … 1481 1548 , m_bLCMod (false) 1482 1549 #if H0412_REF_PIC_LIST_RESTRICTION 1550 #if QC_MVHEVC_B0046 1551 , m_restrictedRefPicListsFlag ( 0) 1552 #else 1483 1553 , m_restrictedRefPicListsFlag ( 1) 1554 #endif 1484 1555 , m_listsModificationPresentFlag( 0) 1485 1556 #endif … … 1522 1593 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1523 1594 , m_bUseDMM (false) 1595 #endif 1596 #if FLEX_CODING_ORDER_M23723 && HHI_DMM_PRED_TEX 1597 , m_bUseDMM34 (false) 1524 1598 #endif 1525 1599 #if OL_QTLIMIT_PREDCODING_B0068 … … 1734 1808 TComSPS::initMultiviewSPS( UInt uiViewId, Int iViewOrderIdx, UInt uiCamParPrecision, Bool bCamParSlice, Int** aaiScale, Int** aaiOffset ) 1735 1809 { 1810 #if !QC_MVHEVC_B0046 1736 1811 AOT( uiViewId == 0 && iViewOrderIdx != 0 ); 1737 1812 AOT( uiViewId != 0 && iViewOrderIdx == 0 ); 1738 1813 AOT( uiViewId != 0 && !bCamParSlice && ( aaiScale == 0 || aaiOffset == 0 ) ); 1739 1814 #endif 1740 1815 m_uiViewId = uiViewId; 1741 1816 m_iViewOrderIdx = iViewOrderIdx; … … 1745 1820 ::memset( m_aaiCodedScale, 0x00, sizeof( m_aaiCodedScale ) ); 1746 1821 ::memset( m_aaiCodedOffset, 0x00, sizeof( m_aaiCodedOffset ) ); 1822 #if !QC_MVHEVC_B0046 1747 1823 if( !m_bCamParInSliceHeader ) 1748 1824 { … … 1755 1831 } 1756 1832 } 1833 #endif 1757 1834 } 1758 1835 … … 2374 2451 , m_ppsMap(MAX_NUM_PPS) 2375 2452 , m_apsMap(MAX_NUM_APS) 2376 #if VIDYO_VPS_INTEGRATION 2453 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 2377 2454 , m_vpsMap(MAX_NUM_VPS) 2378 2455 #endif -
trunk/source/Lib/TLibCommon/TComSlice.h
r189 r210 144 144 #endif 145 145 146 #if VIDYO_VPS_INTEGRATION 146 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 147 147 /// VPS class 148 148 … … 156 156 157 157 UInt m_uiExtensionType; 158 158 #if !QC_MVHEVC_B0046 159 159 Bool m_bDependentFlag[MAX_LAYER_NUM]; 160 #else 161 UInt m_uiNumHRDParameter; 162 UInt m_numAddiLayerOperationPoints; 163 UInt m_numAddiProLevelSets; 164 UInt m_numDirectRefLayer[MAX_LAYER_NUM]; 165 UInt m_numDirectRefID[MAX_LAYER_NUM][MAX_LAYER_NUM]; 166 UInt m_numOpLayerIdMinus1[MAX_LAYER_NUM]; 167 UInt m_numOpLayerId[MAX_LAYER_NUM][MAX_LAYER_NUM]; 168 #endif 160 169 UInt m_uiViewId[MAX_LAYER_NUM]; 170 #if !QC_MVHEVC_B0046 161 171 Bool m_bDepthFlag[MAX_LAYER_NUM]; 172 #endif 162 173 Int m_iViewOrderIdx[MAX_LAYER_NUM]; 174 #if !QC_MVHEVC_B0046 163 175 UInt m_uiDependentLayer[MAX_LAYER_NUM]; 176 #endif 164 177 165 178 UInt m_numReorderPics[MAX_TLAYER]; … … 182 195 Bool getTemporalNestingFlag () { return m_uiMaxLayers; } 183 196 Void setTemporalNestingFlag (UInt t) { m_bTemporalIdNestingFlag = t; } 184 197 #if !QC_MVHEVC_B0046 185 198 Void setExtensionType(UInt v) { m_uiExtensionType = v; } 186 199 UInt getExtensionType() { return m_uiExtensionType; } … … 188 201 Void setDependentFlag(Bool d, UInt layer) { m_bDependentFlag[layer] = d; } 189 202 Bool getDependentFlag(UInt layer) { return m_bDependentFlag[layer]; } 190 203 #endif 191 204 Void setViewId(UInt v, UInt layer) { m_uiViewId[layer] = v; } 192 205 UInt getViewId(UInt layer) { return m_uiViewId[layer]; } 193 206 #if !QC_MVHEVC_B0046 194 207 Void setDepthFlag(Bool d, UInt layer) { m_bDepthFlag[layer] = d; } 195 208 Bool getDepthFlag(UInt layer) { return m_bDepthFlag[layer]; } 196 209 #endif 197 210 Void setViewOrderIdx(Int v, UInt layer) { m_iViewOrderIdx[layer] = v; } 198 211 Int getViewOrderIdx(UInt layer) { return m_iViewOrderIdx[layer]; } 199 212 #if !QC_MVHEVC_B0046 200 213 Void setDependentLayer(UInt v, UInt layer) { m_uiDependentLayer[layer] = v; } 201 214 UInt getDependentLayer(UInt layer) { return m_uiDependentLayer[layer]; } 202 215 #endif 203 216 Void setNumReorderPics(UInt v, UInt tLayer) { m_numReorderPics[tLayer] = v; } 204 217 UInt getNumReorderPics(UInt tLayer) { return m_numReorderPics[tLayer]; } … … 209 222 Void setMaxLatencyIncrease(UInt v, UInt tLayer) { m_uiMaxLatencyIncrease[tLayer] = v; } 210 223 UInt getMaxLatencyIncrease(UInt tLayer) { return m_uiMaxLatencyIncrease[tLayer]; } 211 224 #if QC_MVHEVC_B0046 225 Void setNumHRDParameters(UInt n) { m_uiNumHRDParameter = n; } 226 UInt getNumHRDParameters() { return m_uiNumHRDParameter; } 227 Void setNumDirectRefLayer(UInt n, UInt layer) { m_numDirectRefLayer[layer] = n; }; 228 UInt getNumDirectRefLayer(UInt layer) { return m_numDirectRefLayer[layer]; }; 229 Void setDirectRefLayerId (UInt n, UInt layer, UInt refId) { m_numDirectRefID[layer][refId] = n; assert(refId < MAX_NUM_REF ); }; 230 UInt getDirectRefLayerId ( UInt layer, UInt refId) { return m_numDirectRefID[layer][refId]; }; 231 UInt getNumAddiLayerOperationPoints( ) { return m_numAddiLayerOperationPoints; }; 232 Void setNumAddiLayerOperationPoints(UInt n) { m_numAddiLayerOperationPoints = n; }; 233 Void setNumAddiProLevelSets (UInt n) { m_numAddiProLevelSets = n;} 234 UInt getNumAddiProLevelSets ( ) { return m_numAddiProLevelSets;} 235 236 Void setNumOpLayerIdMinus1 (UInt n, UInt layer) { m_numOpLayerIdMinus1[layer] = n;} 237 UInt getNumOpLayerIdMinus1 (UInt layer ) { return m_numOpLayerIdMinus1[layer];} 238 239 Void setNumOpLayerId (UInt n, UInt layer, UInt OpId) { m_numOpLayerId[layer][OpId] = n;} 240 UInt getNumOpLayerId (UInt layer, UInt OpId ) { return m_numOpLayerId[layer][OpId];} 241 242 #endif 212 243 }; 213 244 … … 218 249 { 219 250 private: 220 #if VIDYO_VPS_INTEGRATION 251 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 221 252 Int m_VPSId; 222 253 #endif … … 363 394 #endif 364 395 396 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 397 Bool m_bUseDMM34; 398 #endif 399 365 400 #if OL_QTLIMIT_PREDCODING_B0068 366 401 Bool m_bUseQTLPC; … … 391 426 TComSPS(); 392 427 virtual ~TComSPS(); 393 #if VIDYO_VPS_INTEGRATION 428 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 394 429 Int getVPSId () { return m_VPSId; } 395 430 Void setVPSId (Int i) { m_VPSId = i; } … … 643 678 #endif 644 679 680 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 681 Bool getUseDMM34() { return m_bUseDMM34; } 682 Void setUseDMM34( Bool b ) { m_bUseDMM34 = b; } 683 #endif 684 645 685 #if OL_QTLIMIT_PREDCODING_B0068 646 686 Void setUseQTLPC( Bool b ) { m_bUseQTLPC = b; } … … 1221 1261 1222 1262 // access channel 1223 #if VIDYO_VPS_INTEGRATION 1263 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1224 1264 TComVPS* m_pcVPS; 1265 #endif 1266 #if QC_IV_AS_LT_B0046 1267 Bool m_bWasLongTerm[2][MAX_NUM_REF+1]; //was long-term picture 1225 1268 #endif 1226 1269 TComSPS* m_pcSPS; … … 1297 1340 Int m_aaiCodedOffset[2][MAX_VIEW_NUM]; 1298 1341 1299 #if SONY_COLPIC_AVAILABILITY 1342 #if SONY_COLPIC_AVAILABILITY|QC_MVHEVC_B0046 1300 1343 Int m_iViewOrderIdx; 1301 1344 #endif … … 1311 1354 Void initTiles(); 1312 1355 1313 #if VIDYO_VPS_INTEGRATION 1356 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1314 1357 Void setVPS ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; } 1315 1358 TComVPS* getVPS () { return m_pcVPS; } 1316 1359 #endif 1360 #if QC_IV_AS_LT_B0046 1361 Void setWasLongTerm( Bool lt, RefPicList e, Int iRefIdx ) { m_bWasLongTerm[e][iRefIdx] = lt; } 1362 Bool getWasLongTerm( RefPicList e, Int iRefIdx ) { return m_bWasLongTerm[e][iRefIdx] ; } 1363 #endif 1364 1317 1365 Void setSPS ( TComSPS* pcSPS ) { m_pcSPS = pcSPS; } 1318 1366 TComSPS* getSPS () { return m_pcSPS; } … … 1587 1635 Void setViewId( Int viewId ) { m_viewId = viewId; } 1588 1636 Int getViewId() { return m_viewId; } 1637 #if QC_MVHEVC_B0046 1638 Void setViewOrderIdx(Int v, UInt layer) { m_iViewOrderIdx = v; } 1639 Int getViewOrderIdx() { return m_iViewOrderIdx; } 1640 #endif 1589 1641 Void setIsDepth( Bool isDepth ) { m_isDepth = isDepth; } 1590 1642 Bool getIsDepth() { return m_isDepth; } … … 1655 1707 } 1656 1708 1709 #if QC_MVHEVC_B0046 1710 Void clearPSList() 1711 { 1712 m_paramsetMap.clear(); 1713 } 1714 #endif 1657 1715 private: 1658 1716 std::map<Int,T *> m_paramsetMap; … … 1665 1723 ParameterSetManager(); 1666 1724 virtual ~ParameterSetManager(); 1667 #if VIDYO_VPS_INTEGRATION 1725 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1668 1726 //! store video parameter set and take ownership of it 1669 1727 Void storeVPS(TComVPS *vps) { m_vpsMap.storePS( vps->getVPSId(), vps); }; … … 1671 1729 TComVPS* getVPS(Int vpsId) { return m_vpsMap.getPS(vpsId); }; 1672 1730 TComVPS* getFirstVPS() { return m_vpsMap.getFirstPS(); }; 1731 #if QC_MVHEVC_B0046 1732 Void clearVPS() { m_vpsMap.clearPSList(); }; 1733 Void clearSPS() { m_spsMap.clearPSList(); }; 1734 Void clearPPS() { m_ppsMap.clearPSList(); }; 1735 #endif 1673 1736 #endif 1674 1737 //! store sequence parameter set and take ownership of it … … 1693 1756 ParameterSetMap<TComPPS> m_ppsMap; 1694 1757 ParameterSetMap<TComAPS> m_apsMap; 1695 #if VIDYO_VPS_INTEGRATION 1758 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1696 1759 ParameterSetMap<TComVPS> m_vpsMap; 1697 1760 #endif -
trunk/source/Lib/TLibCommon/TypeDef.h
r205 r210 41 41 //! \ingroup TLibCommon 42 42 //! \{ 43 43 #define QC_MVHEVC_B0046 0 //JCT3V-B0046: disable 3DHEVC tools 44 #define QC_IV_AS_LT_B0046 1 //JCT3V-B0046: inter-view reference pictures are treated as long-term pictures, scaling of motion vectors for DCP based on ViewId/ViewOrderIdx is disabled 45 #define QC_TMVP_IDX_MOD_B0046 1 //JCT3V-B0046: the reference index for temporal merging candidate is set to 0, as defined in HEVC 46 #define QC_REM_IDV_B0046 1 //JCT3V-B0046: removal of IDV NAL unit type 47 #define FIX_DEL_NULLPTR 1 48 #define FIX_MISUSE_REFINDEX 1 49 #define FIX_FCO_COMP_WARNING 1 50 #define DV_V_RESTRICTION_B0037 1 // JCT3V-B0037 disparity vector vertical range restriction 51 52 #if !QC_MVHEVC_B0046 44 53 ///// ***** FIXES ********* 45 54 // A … … 52 61 #define FIX_DMM_NEG_DIST 1 53 62 #define FIX_LGE_DVMCP_B0133 1 54 #define FIX_MISUSE_REFINDEX 1 55 63 64 65 // FCO 66 #define FLEX_CODING_ORDER_M23723 1 67 #if FLEX_CODING_ORDER_M23723 68 #define DISABLE_FCO_FOR_VSO 0 // Optional compile settings to disable VSO with FCO. 69 #endif 56 70 57 71 ///// ***** PATCHES ********* … … 178 192 179 193 #define HHI_MPI_MERGE_POS 0 180 194 #endif 181 195 ///// ***** HM 6.1 ********* 182 196 #define SKIPFRAME_BUGFIX 1 ///< bug fix to enable skipFrame at decoder … … 478 492 // VPS INTEGRATION 479 493 // ==================================================================================================================== 480 494 #if !QC_MVHEVC_B0046 481 495 #if VIDYO_VPS_INTEGRATION 482 496 #define MAX_NUM_VPS 10 483 497 #endif 498 #else 499 #define MAX_NUM_VPS 1 500 #endif 501 484 502 485 503 // ==================================================================================================================== -
trunk/source/Lib/TLibDecoder/NALread.cpp
r77 r210 132 132 #endif 133 133 134 #if QC_MVHEVC_B0046 135 //nalu.m_layerId = bs.read(6); 136 nalu.m_layerId = bs.read(5); 137 nalu.m_temporalId = bs.read(3) - 1; 138 #else 134 139 #if H0388 135 140 nalu.m_temporalId = bs.read(3); … … 145 150 if ( nalu.m_temporalId ) 146 151 { 152 #if QC_REM_IDV_B0046 153 assert( nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_CRA && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_IDR); 154 #else 147 155 assert( nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_CRA && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_IDR && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_IDV ); 156 #endif 148 157 } 149 158 #endif … … 154 163 case NAL_UNIT_CODED_SLICE_IDR: 155 164 #if H0566_TLA 165 #if !QC_REM_IDV_B0046 156 166 case NAL_UNIT_CODED_SLICE_IDV: 167 #endif 157 168 case NAL_UNIT_CODED_SLICE_CRA: 158 169 case NAL_UNIT_CODED_SLICE_TLA: … … 175 186 if (nalu.m_temporalId == 0) 176 187 { 188 #if QC_REM_IDV_B0046 189 assert(nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR); 190 #else 177 191 assert(nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDV ); 192 #endif 178 193 } 179 194 else … … 190 205 } 191 206 #endif 207 #endif 192 208 } 193 209 //! \} -
trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp
r189 r210 1338 1338 } 1339 1339 } 1340 1340 #if QC_MVHEVC_B0046 1341 Void TDecCavlc::parseVPS(TComVPS* pcVPS) 1342 { 1343 UInt uiCode; 1344 READ_CODE( 4, uiCode, "video_parameter_set_id" ); pcVPS->setVPSId( uiCode ); 1345 READ_FLAG( uiCode, "temporal_id_nesting_flag" ); pcVPS->setTemporalNestingFlag( uiCode ? true:false ); 1346 READ_CODE( 2, uiCode, "vps_reserved_zero_2bits" ); assert( !uiCode ); 1347 READ_CODE( 6, uiCode, "vps_max_layers_minus1" ); pcVPS->setMaxLayers( uiCode + 1 ); 1348 READ_CODE( 3, uiCode, "vps_max_sub_layers_minus1" ); pcVPS->setMaxTLayers( uiCode + 1 ); 1349 READ_CODE( 12, uiCode, "vps_extension_offset" ); assert( !uiCode ); 1350 for(UInt i = 0; i <= pcVPS->getMaxTLayers()-1; i++) 1351 { 1352 READ_UVLC( uiCode, "max_dec_pic_buffering[i]" ); pcVPS->setMaxDecPicBuffering( uiCode, i ); 1353 READ_UVLC( uiCode, "num_reorder_pics[i]" ); pcVPS->setNumReorderPics( uiCode, i ); 1354 READ_UVLC( uiCode, "max_latency_increase[i]" ); pcVPS->setMaxLatencyIncrease( uiCode, i ); 1355 } 1356 READ_UVLC( uiCode, "vps_num_hrd_parameters" ); pcVPS->setNumHRDParameters(uiCode); 1357 assert(pcVPS->getNumHRDParameters()==0); 1358 for ( UInt i = 0; i < pcVPS->getNumHRDParameters(); i ++) 1359 { 1360 // if( i > 0 ) 1361 //{ 1362 // READ_UVLC (0, "op_num_layer_id_values_minus1[ opIdx ]"); 1363 // for( i = 0; i <= op_num_layer_id_values_minus1[ opIdx ]; i++ ) 1364 // READ_UVLC(0, 6, "op_layer_id[ opIdx ][ i ]"); 1365 //} 1366 //hrd_parameters( i = = 0, vps_max_sub_layers_minus1 ); 1367 } 1368 1369 READ_CODE( 1, uiCode, "bit_equal_to_one" ); assert( uiCode ); 1370 //vps_extension_byte_alignment_reserved_one_bit 1371 xReadVPSAlignOne(); 1372 READ_CODE( 8, uiCode, "num_additional_layer_operation_points" ); pcVPS->setNumAddiLayerOperationPoints( uiCode ); 1373 READ_CODE( 8, uiCode, "num_additional_profile_level_sets" ); pcVPS->setNumAddiProLevelSets( uiCode); 1374 1375 1376 for(UInt i=0; i <= pcVPS->getMaxLayers()-1; i++) 1377 { 1378 READ_CODE( 4, uiCode, "num_types_zero_4bits[i]" ); assert( !uiCode ); 1379 READ_CODE( 4, uiCode, "type_zero_4bits[i]" ); assert( !uiCode ); 1380 READ_CODE( 8, uiCode, "view_id[i]" ); pcVPS->setViewId(uiCode, i); 1381 // WRITE_SVLC( pcVPS->getViewOrderIdx(i), "view_order_idx[i]" ); 1382 if(i) 1383 { 1384 READ_CODE( 6, uiCode, "num_direct_ref_layers[ i ]" ); pcVPS->setNumDirectRefLayer(uiCode, i); 1385 for (UInt j = 0; j< pcVPS->getNumDirectRefLayer(i); j++) 1386 { 1387 READ_CODE( 6, uiCode, "ref_layer_id[i][j]" ); pcVPS->setDirectRefLayerId (uiCode, i, j); 1388 } 1389 } 1390 } 1391 for( UInt i=1; i<=pcVPS->getNumAddiProLevelSets(); i++) 1392 { 1393 //profile_tier_level 1394 } 1395 for( UInt i=1; i<= pcVPS->getNumAddiLayerOperationPoints(); i++) 1396 { 1397 if(pcVPS->getMaxLayers() == 3) 1398 { 1399 pcVPS->setNumOpLayerIdMinus1((i < pcVPS->getNumAddiLayerOperationPoints() ? 1: 2), (i-1)); 1400 } 1401 else if( i==1 ) 1402 { 1403 assert(pcVPS->getNumAddiLayerOperationPoints()==1); 1404 pcVPS->setNumOpLayerIdMinus1(pcVPS->getMaxLayers()-1, (i-1)); 1405 } 1406 READ_UVLC( uiCode, "op_num_layer_id_values_minus1[ opIdx ]" ); pcVPS->setNumOpLayerIdMinus1(uiCode, i-1); 1407 for(UInt j = 0; j <= pcVPS->getNumOpLayerIdMinus1(i-1); j++ ) 1408 { 1409 READ_UVLC( uiCode, "op_layer_id[ opIdx ][ i ]" ); pcVPS->setNumOpLayerId(uiCode, i-1, j); 1410 } 1411 if (pcVPS->getNumAddiProLevelSets()) 1412 { 1413 //profile_level_idx[ i ] 1414 } 1415 } 1416 return; 1417 } 1418 #else 1341 1419 #if VIDYO_VPS_INTEGRATION 1342 1420 Void TDecCavlc::parseVPS(TComVPS* pcVPS) … … 1389 1467 1390 1468 #endif 1391 1469 #endif 1392 1470 #if HHI_MPI 1393 1471 Void TDecCavlc::parseSPS(TComSPS* pcSPS, Bool bIsDepth) … … 1401 1479 1402 1480 UInt uiCode; 1481 #if !QC_MVHEVC_B0046 1403 1482 Int iCode; 1404 1483 #endif 1405 1484 READ_CODE( 8, uiCode, "profile_idc" ); pcSPS->setProfileIdc( uiCode ); 1406 1485 READ_CODE( 8, uiCode, "reserved_zero_8bits" ); … … 1645 1724 #endif 1646 1725 READ_FLAG( uiCode, "sps_extension_flag"); 1726 #if !QC_MVHEVC_B0046 1647 1727 if(uiCode) 1648 1728 { … … 1803 1883 } 1804 1884 } 1885 #endif 1805 1886 } 1806 1887 … … 1907 1988 } 1908 1989 #endif 1990 #if QC_REM_IDV_B0046 1991 #if !QC_MVHEVC_B0046 1992 if(rpcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR && rpcSlice->getSPS()->getViewId() == 0) 1993 #else 1994 if(rpcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR && rpcSlice->getViewId() == 0) 1995 #endif 1996 #else 1909 1997 if(rpcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR) 1998 #endif 1910 1999 { 1911 2000 READ_UVLC( uiCode, "idr_pic_id" ); //ignored … … 1941 2030 } 1942 2031 rpcSlice->setPOC( iPOCmsb+iPOClsb ); 1943 2032 #if QC_REM_IDV_B0046 2033 #if !QC_MVHEVC_B0046 2034 if( rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR && rpcSlice->getSPS()->getViewId() && rpcSlice->getPOC() == 0 ) 2035 #else 2036 if( rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR && rpcSlice->getViewId() && rpcSlice->getPOC() == 0 ) 2037 #endif 2038 #else 1944 2039 if( rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDV && rpcSlice->getPOC() == 0 ) 2040 #endif 1945 2041 { 1946 2042 TComReferencePictureSet* rps = rpcSlice->getLocalRPS(); … … 2082 2178 { 2083 2179 #if H0412_REF_PIC_LIST_RESTRICTION 2180 #if QC_MVHEVC_B0046 2181 if( !rpcSlice->getViewId() || !rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2182 #else 2084 2183 if( !rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2184 #endif 2085 2185 { 2086 2186 refPicListModification->setRefPicListModificationFlagL0( 0 ); … … 2153 2253 { 2154 2254 #if H0412_REF_PIC_LIST_RESTRICTION 2255 #if QC_MVHEVC_B0046 2256 if( !rpcSlice->getViewId() || !rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2257 #else 2155 2258 if( !rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2259 #endif 2156 2260 { 2157 2261 refPicListModification->setRefPicListModificationFlagL1( 0 ); … … 2237 2341 2238 2342 #if H0412_REF_PIC_LIST_RESTRICTION 2239 if(rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2343 #if QC_MVHEVC_B0046 2344 if( rpcSlice->getViewId() && rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2345 #else 2346 if(rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2347 #endif 2240 2348 { 2241 2349 #endif … … 2944 3052 } 2945 3053 3054 #if QC_MVHEVC_B0046 3055 /** Parse VPS alignment one bits. 3056 * \returns Void 3057 */ 3058 Void TDecCavlc::xReadVPSAlignOne( ) 3059 { 3060 UInt uiNumberOfBits = m_pcBitstream->getNumBitsUntilByteAligned(); 3061 3062 if(uiNumberOfBits) 3063 { 3064 UInt uiBits; 3065 UInt uiSymbol; 3066 3067 for(uiBits = 0; uiBits < uiNumberOfBits; uiBits++) 3068 { 3069 xReadFlag( uiSymbol ); 3070 3071 if(!uiSymbol) 3072 { 3073 printf("\nWarning! vps_extension_byte_alignment_reserved_one_bit include a non-zero value.\n"); 3074 } 3075 } 3076 } 3077 } 3078 #endif 2946 3079 /** Parse PCM alignment zero bits. 2947 3080 * \returns Void -
trunk/source/Lib/TLibDecoder/TDecCAVLC.h
r189 r210 75 75 Void xReadFlagTr ( UInt& rValue, const Char *pSymbolName); 76 76 #endif 77 77 #if QC_MVHEVC_B0046 78 Void xReadVPSAlignOne (); 79 #endif 78 80 Void xReadPCMAlignZero (); 79 81 … … 113 115 Void parseQtRootCbf ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt& uiQtRootCbf ); 114 116 115 #if VIDYO_VPS_INTEGRATION 117 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 116 118 Void parseVPS ( TComVPS* pcVPS ); 117 119 #endif -
trunk/source/Lib/TLibDecoder/TDecEntropy.h
r189 r210 71 71 #endif 72 72 73 #if VIDYO_VPS_INTEGRATION 73 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 74 74 virtual Void parseVPS ( TComVPS* pcVPS ) = 0; 75 75 #endif … … 175 175 Void resetEntropy ( TComSlice* p) { m_pcEntropyDecoderIf->resetEntropy(p); } 176 176 177 #if VIDYO_VPS_INTEGRATION 177 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 178 178 Void decodeVPS ( TComVPS* pcVPS ) { m_pcEntropyDecoderIf->parseVPS(pcVPS); } 179 179 #endif -
trunk/source/Lib/TLibDecoder/TDecSbac.h
r189 r210 87 87 Void setBitstream ( TComInputBitstream* p ) { m_pcBitstream = p; m_pcTDecBinIf->init( p ); } 88 88 89 #if VIDYO_VPS_INTEGRATION 89 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 90 90 Void parseVPS ( TComVPS* pcVPS ) {} 91 91 #endif -
trunk/source/Lib/TLibDecoder/TDecSlice.cpp
r77 r210 446 446 , m_ppsBuffer(16) 447 447 , m_apsBuffer(64) 448 #if VIDYO_VPS_INTEGRATION 448 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 449 449 , m_vpsBuffer(16) 450 450 #endif … … 458 458 } 459 459 460 #if VIDYO_VPS_INTEGRATION 460 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 461 461 TComVPS* ParameterSetManagerDecoder::getPrefetchedVPS (Int vpsId) 462 462 { … … 513 513 m_ppsMap.mergePSList(m_ppsBuffer); 514 514 m_spsMap.mergePSList(m_spsBuffer); 515 #if VIDYO_VPS_INTEGRATION 515 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 516 516 m_vpsMap.mergePSList(m_vpsBuffer); 517 517 #endif -
trunk/source/Lib/TLibDecoder/TDecSlice.h
r100 r210 96 96 Void storePrefetchedAPS(TComAPS *aps) { m_apsBuffer.storePS( aps->getAPSID(), aps); }; 97 97 TComAPS* getPrefetchedAPS (Int apsId); 98 #if VIDYO_VPS_INTEGRATION 98 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 99 99 Void storePrefetchedVPS(TComVPS *vps) { m_vpsBuffer.storePS( vps->getVPSId(), vps); }; 100 100 TComVPS* getPrefetchedVPS (Int vpsId); … … 106 106 ParameterSetMap<TComPPS> m_ppsBuffer; 107 107 ParameterSetMap<TComAPS> m_apsBuffer; 108 #if VIDYO_VPS_INTEGRATION 108 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 109 109 ParameterSetMap<TComVPS> m_vpsBuffer; 110 110 #endif -
trunk/source/Lib/TLibDecoder/TDecTop.cpp
r77 r210 50 50 m_aaiCodedScale = new Int* [ MAX_VIEW_NUM ]; 51 51 m_aiViewOrderIndex = new Int [ MAX_VIEW_NUM ]; 52 #if QC_MVHEVC_B0046 53 m_aiViewId = new Int [ MAX_VIEW_NUM ]; 54 #endif 52 55 m_aiViewReceived = new Int [ MAX_VIEW_NUM ]; 53 56 for( UInt uiId = 0; uiId < MAX_VIEW_NUM; uiId++ ) … … 266 269 m_bFirstSliceInSequence = true; 267 270 m_pcCamParsCollector = 0; 271 #if QC_MVHEVC_B0046 272 m_bFirstNal = false; 273 #endif 268 274 } 269 275 … … 578 584 TComVPS *vps = m_parameterSetManagerDecoder.getVPS(sps->getVPSId()); 579 585 assert (vps != 0); 586 #if !QC_REM_IDV_B0046 580 587 if( m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA ) 588 #else 589 if( (m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA) && !sps->getViewId() ) 590 #endif 581 591 // VPS can only be activated on IDR or CRA... 582 592 getTAppDecTop()->getVPSAccess()->setActiveVPSId( sps->getVPSId() ); … … 584 594 m_apcSlicePilot->setPPS(pps); 585 595 m_apcSlicePilot->setSPS(sps); 586 #if VIDYO_VPS_INTEGRATION 596 #if QC_MVHEVC_B0046 597 TComVPS *vps = m_parameterSetManagerDecoder.getVPS(sps->getVPSId()); 598 #endif 599 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 587 600 m_apcSlicePilot->setVPS(vps); 588 601 #endif … … 626 639 m_apcSlicePilot->setPPS(m_parameterSetManagerDecoder.getPrefetchedPPS(0)); 627 640 m_apcSlicePilot->setSPS(m_parameterSetManagerDecoder.getPrefetchedSPS(0)); 628 #if VIDYO_VPS_INTEGRATION 641 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 642 #if QC_MVHEVC_B0046 643 m_apcSlicePilot->setIsDepth(false); 644 #endif 629 645 m_apcSlicePilot->setVPS(m_parameterSetManagerDecoder.getPrefetchedVPS(0)); 630 646 #endif 631 647 m_apcSlicePilot->initTiles(); 632 648 #if QC_MVHEVC_B0046 649 m_apcSlicePilot->setViewId( nalu.m_layerId ); 650 m_apcSlicePilot->setViewId( nalu.m_layerId ); 651 m_apcSlicePilot->setViewOrderIdx(m_apcSlicePilot->getVPS()->getViewId(nalu.m_layerId), nalu.m_layerId); 652 Int iNumDirectRef = m_apcSlicePilot->getVPS()->getNumDirectRefLayer(nalu.m_layerId); 653 m_apcSlicePilot->getSPS()->setNumberOfUsableInterViewRefs(iNumDirectRef); 654 for(Int iNumIvRef = 0; iNumIvRef < iNumDirectRef; iNumIvRef ++) 655 { 656 Int iDeltaLayerId = m_apcSlicePilot->getVPS()->getDirectRefLayerId( nalu.m_layerId, iNumIvRef); 657 m_apcSlicePilot->getSPS()->setUsableInterViewRef(iNumIvRef, (iDeltaLayerId-nalu.m_layerId)); 658 } 659 #endif 633 660 if (m_bFirstSliceInPicture) 634 661 { … … 645 672 if( m_bFirstSliceInPicture ) 646 673 { 674 #if QC_MVHEVC_B0046 675 if( nalu.m_layerId == 0 ) { m_nalUnitTypeBaseView = nalu.m_nalUnitType; } 676 else { m_nalUnitTypeBaseView = m_tAppDecTop->getTDecTop( 0, 0 )->getNalUnitTypeBaseView(); } 677 #else 647 678 #if VIDYO_VPS_INTEGRATION 648 679 if( m_apcSlicePilot->getVPS()->getViewId(nalu.m_layerId) == 0 ) { m_nalUnitTypeBaseView = nalu.m_nalUnitType; } … … 652 683 else { m_nalUnitTypeBaseView = m_tAppDecTop->getTDecTop( 0, nalu.m_isDepth )->getNalUnitTypeBaseView(); } 653 684 #endif 654 685 #endif 655 686 m_apcSlicePilot->setNalUnitTypeBaseViewMvc( m_nalUnitTypeBaseView ); 656 687 } … … 951 982 952 983 // Set reference list 984 #if !QC_MVHEVC_B0046 953 985 #if VIDYO_VPS_INTEGRATION 954 986 pcSlice->setViewId( pcSlice->getVPS()->getViewId(nalu.m_layerId) ); … … 958 990 pcSlice->setIsDepth(m_isDepth); 959 991 #endif 992 #endif 960 993 961 994 #if SONY_COLPIC_AVAILABILITY … … 969 1002 assert( m_tAppDecTop != NULL ); 970 1003 TComPic * const pcTexturePic = m_isDepth ? m_tAppDecTop->getPicFromView( m_viewId, pcSlice->getPOC(), false ) : NULL; 1004 1005 #if FLEX_CODING_ORDER_M23723 1006 if (pcTexturePic != NULL) 1007 { 1008 assert( !m_isDepth || pcTexturePic != NULL ); 1009 pcSlice->setTexturePic( pcTexturePic ); 1010 } 1011 #else 971 1012 assert( !m_isDepth || pcTexturePic != NULL ); 972 1013 pcSlice->setTexturePic( pcTexturePic ); 1014 #endif 1015 973 1016 974 1017 std::vector<TComPic*> apcInterViewRefPics = m_tAppDecTop->getInterViewRefPics( m_viewId, pcSlice->getPOC(), m_isDepth, pcSlice->getSPS() ); … … 1071 1114 m_cGopDecoder.decompressGop(nalu.m_Bitstream, pcPic, false); 1072 1115 1116 #if QC_IV_AS_LT_B0046 1117 std::vector<TComPic*> apcInterViewRefPics = m_tAppDecTop->getInterViewRefPics( m_viewId, pcSlice->getPOC(), m_isDepth, pcSlice->getSPS() ); 1118 for( Int k = 0; k < apcInterViewRefPics.size(); k++ ) 1119 { 1120 TComPic* pcPicIv = apcInterViewRefPics[k]; 1121 pcPicIv->setIsLongTerm( 0 ); 1122 } 1123 #endif 1073 1124 if( m_pcCamParsCollector ) 1074 1125 { … … 1082 1133 } 1083 1134 1084 #if VIDYO_VPS_INTEGRATION 1135 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1085 1136 Void TDecTop::xDecodeVPS() 1086 1137 { … … 1089 1140 m_cEntropyDecoder.decodeVPS( vps ); 1090 1141 m_parameterSetManagerDecoder.storePrefetchedVPS(vps); 1142 #if !QC_MVHEVC_B0046 1091 1143 getTAppDecTop()->getVPSAccess()->addVPS( vps ); 1144 #endif 1092 1145 } 1093 1146 #endif … … 1155 1208 switch (nalu.m_nalUnitType) 1156 1209 { 1157 #if VIDYO_VPS_INTEGRATION 1210 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1158 1211 case NAL_UNIT_VPS: 1159 1212 xDecodeVPS(); … … 1178 1231 case NAL_UNIT_CODED_SLICE_IDR: 1179 1232 #if H0566_TLA 1233 #if !QC_REM_IDV_B0046 1180 1234 case NAL_UNIT_CODED_SLICE_IDV: 1235 #endif 1181 1236 case NAL_UNIT_CODED_SLICE_CRA: 1182 1237 case NAL_UNIT_CODED_SLICE_TLA: … … 1193 1248 } 1194 1249 1250 #if QC_MVHEVC_B0046 1251 Void TDecTop::xCopyVPS( TComVPS* pVPSV0 ) 1252 { 1253 m_parameterSetManagerDecoder.storePrefetchedVPS(pVPSV0); 1254 } 1255 1256 Void TDecTop::xCopySPS( TComSPS* pSPSV0 ) 1257 { 1258 TComSPS* sps = new TComSPS(); 1259 sps = pSPSV0; 1260 m_parameterSetManagerDecoder.storePrefetchedSPS(sps); 1261 #if LCU_SYNTAX_ALF 1262 m_cAdaptiveLoopFilter.create( sps->getPicWidthInLumaSamples(), sps->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth ); 1263 #endif 1264 } 1265 1266 Void TDecTop::xCopyPPS(TComPPS* pPPSV0 ) 1267 { 1268 m_parameterSetManagerDecoder.storePrefetchedPPS( pPPSV0 ); 1269 1270 //!!!KS: Activate parameter sets for parsing APS (unless dependency is resolved) 1271 m_apcSlicePilot->setPPSId(pPPSV0->getPPSId()); 1272 xActivateParameterSets(); 1273 m_apcSlicePilot->initTiles(); 1274 } 1275 #endif 1195 1276 /** Function for checking if picture should be skipped because of random access 1196 1277 * \param iSkipFrame skip frame counter -
trunk/source/Lib/TLibDecoder/TDecTop.h
r100 r210 88 88 Int** m_aaiCodedScale; 89 89 Int* m_aiViewOrderIndex; 90 #if QC_MVHEVC_B0046 91 Int* m_aiViewId; 92 #endif 90 93 Int* m_aiViewReceived; 91 94 UInt m_uiCamParsCodedPrecision; … … 168 171 169 172 Void deletePicBuffer(); 170 173 #if QC_MVHEVC_B0046 174 Void xCopySPS( TComSPS* pSPSV0); 175 Void xCopyPPS( TComPPS* pPPSV0); 176 Void xCopyVPS( TComVPS* pVPSV0); 177 #endif 171 178 #if HHI_INTER_VIEW_RESIDUAL_PRED 172 179 Void deleteExtraPicBuffers ( Int iPoc ); … … 195 202 TAppDecTop* getTAppDecTop() { return m_tAppDecTop; } 196 203 NalUnitType getNalUnitTypeBaseView() { return m_nalUnitTypeBaseView; } 197 204 #if QC_MVHEVC_B0046 205 bool m_bFirstNal; //used to copy SPS, PPS, VPS 206 ParameterSetManagerDecoder* xGetParaSetDec () {return &m_parameterSetManagerDecoder;} 207 #endif 198 208 protected: 199 209 Void xGetNewPicBuffer (TComSlice* pcSlice, TComPic*& rpcPic); … … 208 218 Bool xDecodeSlice(InputNALUnit &nalu, Int iSkipFrame, Int iPOCLastDisplay); 209 219 #endif 210 #if VIDYO_VPS_INTEGRATION 220 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 211 221 Void xDecodeVPS(); 212 222 #endif -
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(); -
trunk/source/Lib/TLibExtractor/TExtrTop.cpp
r100 r210 55 55 Bool TExtrTop::extract( InputNALUnit& nalu, std::set<UInt>& rsuiExtractLayerIds ) 56 56 { 57 #if VIDYO_VPS_INTEGRATION 57 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 58 58 //extraction now has to be done using layer_id 59 59 UInt uiLayerId = nalu.m_layerId; … … 65 65 m_cEntropyDecoder.setBitstream ( nalu.m_Bitstream ); 66 66 67 #if VIDYO_VPS_INTEGRATION 67 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 68 68 if ( nalu.m_nalUnitType == NAL_UNIT_VPS ) 69 69 { -
trunk/source/Lib/TLibExtractor/TExtrTop.h
r77 r210 54 54 { 55 55 private: 56 #if VIDYO_VPS_INTEGRATION 56 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 57 57 TComVPS m_cVPS; 58 58 #endif -
trunk/source/Lib/TLibRenderer/TRenModSetupStrParser.cpp
r100 r210 36 36 #include "TRenFilter.h" 37 37 #include "TRenModSetupStrParser.h" 38 38 #if !QC_MVHEVC_B0046 39 39 Int 40 40 TRenModSetupStrParser::getNumOfModels() … … 450 450 rcNextChar = m_pchSetStr[iPos]; 451 451 } 452 #endif 453 -
trunk/source/Lib/TLibRenderer/TRenModSetupStrParser.h
r56 r210 31 31 * THE POSSIBILITY OF SUCH DAMAGE. 32 32 */ 33 33 #if !QC_MVHEVC_B0046 34 34 #ifndef __TRENMODSETUPSTRPARSER__ 35 35 #define __TRENMODSETUPSTRPARSER__ … … 127 127 128 128 #endif //__TRENMODEL__ 129 #endif 130 -
trunk/source/Lib/TLibRenderer/TRenModel.cpp
r189 r210 35 35 #include "TRenFilter.h" 36 36 #include "TRenModel.h" 37 37 #if !QC_MVHEVC_B0046 38 38 /////////// TRENMODEL ////////////////////// 39 39 TRenModel::TRenModel() … … 697 697 } 698 698 } 699 #endif 700 -
trunk/source/Lib/TLibRenderer/TRenModel.h
r189 r210 32 32 */ 33 33 34 34 #if !QC_MVHEVC_B0046 35 35 #ifndef __TRENMODEL__ 36 36 #define __TRENMODEL__ … … 156 156 157 157 #endif //__TRENMODEL__ 158 #endif 159 -
trunk/source/Lib/TLibRenderer/TRenSingleModel.cpp
r189 r210 36 36 #include "TRenSingleModel.h" 37 37 38 #if !QC_MVHEVC_B0046 38 39 ////////////// TRENSINGLE MODEL /////////////// 39 40 template <BlenMod iBM, Bool bBitInc> … … 1956 1957 } 1957 1958 #endif 1959 #endif 1960 -
trunk/source/Lib/TLibRenderer/TRenSingleModel.h
r189 r210 32 32 */ 33 33 34 35 #ifndef __TRENSINGLEMODEL__ 34 #if !QC_MVHEVC_B0046 35 #ifndef __TRENSINGLEMODEL__ 36 36 #define __TRENSINGLEMODEL__ 37 37 … … 391 391 392 392 #endif //__TRENSINGLEMODEL__ 393 #endif 394
Note: See TracChangeset for help on using the changeset viewer.