Changeset 166 in 3DVCSoftware for branches/HTM-4.0.1-VSP-dev0/source/App
- Timestamp:
- 1 Nov 2012, 19:22:41 (12 years ago)
- Location:
- branches/HTM-4.0.1-VSP-dev0/source/App
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-4.0.1-VSP-dev0/source/App/TAppDecoder/TAppDecTop.cpp
r105 r166 262 262 } 263 263 } 264 #if DEBUGIMGOUT 265 for(Int viewDepthIdx=0; viewDepthIdx<m_tVideoIOYuvReconDbgFile.size() ; viewDepthIdx++) 266 { 267 if( m_tVideoIOYuvReconDbgFile[viewDepthIdx] ) 268 { 269 m_tVideoIOYuvReconDbgFile[viewDepthIdx]->close(); 270 delete m_tVideoIOYuvReconDbgFile[viewDepthIdx]; 271 m_tVideoIOYuvReconDbgFile[viewDepthIdx] = NULL ; 272 } 273 } 274 #endif 264 275 265 276 for(Int viewDepthIdx=0; viewDepthIdx<m_tDecTop.size() ; viewDepthIdx++) … … 330 341 #endif 331 342 } 343 #if DEBUGIMGOUT 344 #if PIC_CROPPING 345 m_tVideoIOYuvReconDbgFile[viewDepthId]->write( pcPic->getPicYuvRecDbg(), sps->getPicCropLeftOffset(), sps->getPicCropRightOffset(), sps->getPicCropTopOffset(), sps->getPicCropBottomOffset() ); 346 #else 347 m_tVideoIOYuvReconDbgFile[viewDepthId]->write( pcPic->getPicYuvRecDbg(), pcPic->getSlice(0)->getSPS()->getPad() ); 348 #endif 349 #endif 332 350 333 351 // update POC of display order … … 388 406 #endif 389 407 } 408 #if DEBUGIMGOUT 409 #if PIC_CROPPING 410 m_tVideoIOYuvReconDbgFile[viewDepthId]->write( pcPic->getPicYuvRecDbg(), sps->getPicCropLeftOffset(), sps->getPicCropRightOffset(), sps->getPicCropTopOffset(), sps->getPicCropBottomOffset() ); 411 #else 412 m_tVideoIOYuvReconDbgFile[viewDepthId]->write( pcPic->getPicYuvRecDbg(), pcPic->getSlice(0)->getSPS()->getPad() ); 413 #endif 414 #endif 390 415 391 416 // update POC of display order … … 476 501 } 477 502 #endif 478 503 #if DEBUGIMGOUT 504 while( m_tVideoIOYuvReconDbgFile.size() < newNumberOfViewDepth) 505 { 506 m_tVideoIOYuvReconDbgFile.push_back(new TVideoIOYuv); 507 Char buffer[4]; 508 sprintf(buffer,"_%i", (Int)(m_tVideoIOYuvReconDbgFile.size()-1) / 2 ); 509 Char* nextFilename = NULL; 510 if( (m_tVideoIOYuvReconDbgFile.size() % 2) == 0 ) 511 { 512 Char* pchTempFilename = NULL; 513 xAppendToFileNameEnd( "DebugImg.yuv", "_depth", pchTempFilename); 514 xAppendToFileNameEnd( pchTempFilename, buffer, nextFilename); 515 free ( pchTempFilename ); 516 } 517 else 518 { 519 xAppendToFileNameEnd( "DebugImg.yuv", buffer, nextFilename); 520 } 521 if( isDepth || ( !isDepth && (m_tVideoIOYuvReconDbgFile.size() % 2) == 1 ) ) 522 { 523 m_tVideoIOYuvReconDbgFile.back()->open( nextFilename, true, m_outputBitDepth, g_uiBitDepth + g_uiBitIncrement ); 524 } 525 free ( nextFilename ); 526 } 527 #endif 479 528 while( m_pocLastDisplay.size() < newNumberOfViewDepth ) 480 529 { … … 533 582 return pcPic; 534 583 } 584 585 #if VSP_N 586 Void TAppDecTop::storeVSPInBuffer(TComPic* pcPicVSP, TComPic* pcPicAvail, Int iCodedViewIdx, Int iCoddedViewOrderIdx, Int iCurPoc, Bool bDepth) 587 { 588 //first view does not have VSP 589 #if VSP_TEXT_ONLY 590 if((iCodedViewIdx == 0)||(bDepth)) 591 #else 592 if((iCodedViewIdx == 0)) 593 #endif 594 return; 595 pcPicVSP->getSlice(0)->setPOC( iCurPoc ); 596 Int iNeighborViewId = 0; 597 Bool bRenderFromLeft; 598 //check if the neighboring view is situated to the left of the current view 599 bRenderFromLeft = ((iCoddedViewOrderIdx)>0); 600 //pointers to buffers 601 TComPicYuv* pcPicYuvVideo = getPicFromView(iNeighborViewId, iCurPoc, bDepth)->getPicYuvRec(); 602 TComPicYuv* pcPicYuvDepth = getPicFromView(iNeighborViewId, iCurPoc, true)->getPicYuvRec(); 603 TComPicYuv* pcPicYuvVSP = pcPicVSP->getPicYuvRec(); 604 TComPicYuv* pcPicYuvAvail = pcPicAvail->getPicYuvRec(); 605 //verifying buffers 606 AOF(pcPicYuvVideo); 607 AOF(pcPicYuvDepth); 608 AOF(pcPicYuvVSP); 609 AOF(pcPicYuvAvail); 610 611 TComPic* pcPic = getPicFromView( iCodedViewIdx, iCurPoc, bDepth ); 612 pcPic->setPicYuvSynth( pcPicYuvVSP ); 613 pcPic->setPicYuvAvail( pcPicYuvAvail ); 614 615 //setting look-up table 616 #if 0 617 m_cVSPRendererTop.setShiftLUTs( 618 m_cCamParsCollector.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 619 m_cCamParsCollector.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 620 m_cCamParsCollector.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 621 m_cCamParsCollector.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 622 m_cCamParsCollector.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 623 m_cCamParsCollector.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 624 -1 625 ); 626 #else 627 #if NTT_SUBPEL 628 m_cVSPRendererTop.setShiftLUTs( 629 m_cCamParsCollector.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 630 m_cCamParsCollector.getBaseViewIPelLUT ()[iNeighborViewId][iCodedViewIdx], 631 NULL, 632 m_cCamParsCollector.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 633 m_cCamParsCollector.getBaseViewIPelLUT ()[iNeighborViewId][iCodedViewIdx], 634 NULL, 635 -1 636 ); 637 m_cVSPRendererTop.setFposLUTs( 638 m_cCamParsCollector.getBaseViewFPosLUT()[iNeighborViewId][iCodedViewIdx], 639 m_cCamParsCollector.getBaseViewFPosLUT()[iNeighborViewId][iCodedViewIdx] 640 ); 641 #else 642 m_cVSPRendererTop.setShiftLUTs( 643 m_cCamParsCollector.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 644 m_cCamParsCollector.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 645 NULL, 646 m_cCamParsCollector.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 647 m_cCamParsCollector.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 648 NULL, 649 -1 650 ); 651 #endif 652 #endif 653 654 #if NTT_SUBPEL 655 m_cVSPRendererTop.setInterpolationMode( (bDepth ? 0 : 5) ); 656 #endif 657 658 //extrapolate from view iNeighborViewId to the current view, storing in the VSP buffer 659 //m_cVSPRendererTop.extrapolateView(pcPicYuvVideo,pcPicYuvDepth, pcPicYuvVSP, bRenderFromLeft); 660 m_cVSPRendererTop.extrapolateAvailabilityView(pcPicYuvVideo,pcPicYuvDepth, pcPicYuvVSP, pcPicYuvAvail, bRenderFromLeft); 661 662 // mark it should be extended 663 pcPicVSP->getPicYuvRec()->setBorderExtension(false); 664 pcPicVSP->getPicYuvRec()->extendPicBorder(); //will extend the border for prediction using pixels outside the frame 665 pcPicAvail->getPicYuvRec()->setBorderExtension(false); 666 pcPicAvail->getPicYuvRec()->extendPicBorder(); 667 #if VSP_N_DUMP 668 { 669 Char acFilenameBase[1024]; 670 ::sprintf(acFilenameBase,"VSP_dec_%sv%d_%dx%d_%04d.yuv",(bDepth?"D":"T"),iCodedViewIdx,pcPicYuvVSP->getWidth(), pcPicYuvVSP->getHeight(), iCurPoc); 671 pcPicYuvVSP->dump(acFilenameBase,0); 672 //pcPicYuvAvail->dump(acFilenameBase,iCurPoc!=0); 673 } 674 #endif 675 } 676 #endif 677 535 678 //! \} -
branches/HTM-4.0.1-VSP-dev0/source/App/TAppDecoder/TAppDecTop.h
r100 r166 49 49 #include "TLibDecoder/TDecTop.h" 50 50 #include "TAppDecCfg.h" 51 #if VSP_N 52 #include "../../Lib/TLibRenderer/TRenTop.h" 53 #endif 51 54 52 55 //! \ingroup TAppDecoder … … 65 68 66 69 std::vector<TVideoIOYuv*> m_tVideoIOYuvReconFile; ///< reconstruction YUV class 70 #if DEBUGIMGOUT 71 std::vector<TVideoIOYuv*> m_tVideoIOYuvReconDbgFile; ///< debug YUV class 72 #endif 67 73 68 74 // for output control … … 79 85 TComSPSAccess m_cSPSAccess; 80 86 TComAUPicAccess m_cAUPicAccess; 87 #endif 88 89 #if VSP_N 90 TRenTop m_cVSPRendererTop; 81 91 #endif 82 92 … … 107 117 #endif 108 118 119 #if VSP_N 120 Bool getUseDepth () { return m_useDepth; } 121 TRenTop* getVSPRendererTop(){ return &m_cVSPRendererTop; } 122 Void storeVSPInBuffer(TComPic* pcPicVSP, TComPic* pcPicAvail, Int iCodedViewIdx, Int iCoddedViewOrderIdx, Int iCurPoc, Bool bDepth); 123 #endif 124 109 125 protected: 110 126 // Void xCreateDecLib (); ///< create internal classes -
branches/HTM-4.0.1-VSP-dev0/source/App/TAppEncoder/TAppEncCfg.cpp
r133 r166 194 194 195 195 /* File, I/O and source parameters */ 196 ("InputFile_%d,i_%d", m_pchInputFileList, (char *) 0 , MAX_VIEW_NUM , "original Yuv input file name %d")197 ("DepthInputFile_%d,di_%d", m_pchDepthInputFileList, (char *) 0 , MAX_VIEW_NUM , "original Yuv depth input file name %d")198 ("ReconFile_%d,o_%d", m_pchReconFileList, (char *) 0 , MAX_VIEW_NUM , "reconstructed Yuv output file name %d")199 ("DepthReconFile_%d,do_%d", m_pchDepthReconFileList, (char *) 0 , MAX_VIEW_NUM , "reconstructed Yuv depth output file name %d")200 ("BitstreamFile,b", cfg_BitstreamFile, string(""),"bitstream output file name")201 ("CodeDepthMaps", m_bUsingDepthMaps, false,"Encode depth maps" )202 ("CodedCamParsPrecision", m_iCodedCamParPrecision,STD_CAM_PARAMETERS_PRECISION, "precision for coding of camera parameters (in units of 2^(-x) luma samples)" )203 ("LambdaModifier0,-LM0", m_adLambdaModifier[ 0 ], ( double )1.0,"Lambda modifier for temporal layer 0")204 ("LambdaModifier1,-LM1", m_adLambdaModifier[ 1 ], ( double )1.0,"Lambda modifier for temporal layer 1")205 ("LambdaModifier2,-LM2", m_adLambdaModifier[ 2 ], ( double )1.0,"Lambda modifier for temporal layer 2")206 ("LambdaModifier3,-LM3", m_adLambdaModifier[ 3 ], ( double )1.0,"Lambda modifier for temporal layer 3")207 ("SourceWidth,-wdt", m_iSourceWidth, 0,"Source picture width")208 ("SourceHeight,-hgt", m_iSourceHeight, 0,"Source picture height")196 ("InputFile_%d,i_%d", m_pchInputFileList, (char *) 0 , MAX_VIEW_NUM , "original Yuv input file name %d") 197 ("DepthInputFile_%d,di_%d", m_pchDepthInputFileList, (char *) 0 , MAX_VIEW_NUM , "original Yuv depth input file name %d") 198 ("ReconFile_%d,o_%d", m_pchReconFileList, (char *) 0 , MAX_VIEW_NUM , "reconstructed Yuv output file name %d") 199 ("DepthReconFile_%d,do_%d", m_pchDepthReconFileList, (char *) 0 , MAX_VIEW_NUM , "reconstructed Yuv depth output file name %d") 200 ("BitstreamFile,b", cfg_BitstreamFile, string(""), "bitstream output file name") 201 ("CodeDepthMaps", m_bUsingDepthMaps, false, "Encode depth maps" ) 202 ("CodedCamParsPrecision", m_iCodedCamParPrecision, STD_CAM_PARAMETERS_PRECISION, "precision for coding of camera parameters (in units of 2^(-x) luma samples)" ) 203 ("LambdaModifier0,-LM0", m_adLambdaModifier[ 0 ], ( double )1.0, "Lambda modifier for temporal layer 0") 204 ("LambdaModifier1,-LM1", m_adLambdaModifier[ 1 ], ( double )1.0, "Lambda modifier for temporal layer 1") 205 ("LambdaModifier2,-LM2", m_adLambdaModifier[ 2 ], ( double )1.0, "Lambda modifier for temporal layer 2") 206 ("LambdaModifier3,-LM3", m_adLambdaModifier[ 3 ], ( double )1.0, "Lambda modifier for temporal layer 3") 207 ("SourceWidth,-wdt", m_iSourceWidth, 0, "Source picture width") 208 ("SourceHeight,-hgt", m_iSourceHeight, 0, "Source picture height") 209 209 #if PIC_CROPPING 210 ("CroppingMode", m_croppingMode, 0,"Cropping mode (0: no cropping, 1:automatic padding, 2: padding, 3:cropping")211 ("CropLeft", m_cropLeft, 0,"Left cropping/padding for cropping mode 3")212 ("CropRight", m_cropRight, 0,"Right cropping/padding for cropping mode 3")213 ("CropTop", m_cropTop, 0,"Top cropping/padding for cropping mode 3")214 ("CropBottom", m_cropBottom, 0,"Bottom cropping/padding for cropping mode 3")215 ("HorizontalPadding,-pdx", m_aiPad[0], 0,"horizontal source padding for cropping mode 2")216 ("VerticalPadding,-pdy", m_aiPad[1], 0,"vertical source padding for cropping mode 2")210 ("CroppingMode", m_croppingMode, 0, "Cropping mode (0: no cropping, 1:automatic padding, 2: padding, 3:cropping") 211 ("CropLeft", m_cropLeft, 0, "Left cropping/padding for cropping mode 3") 212 ("CropRight", m_cropRight, 0, "Right cropping/padding for cropping mode 3") 213 ("CropTop", m_cropTop, 0, "Top cropping/padding for cropping mode 3") 214 ("CropBottom", m_cropBottom, 0, "Bottom cropping/padding for cropping mode 3") 215 ("HorizontalPadding,-pdx", m_aiPad[0], 0, "horizontal source padding for cropping mode 2") 216 ("VerticalPadding,-pdy", m_aiPad[1], 0, "vertical source padding for cropping mode 2") 217 217 #endif 218 218 ("InputBitDepth", m_uiInputBitDepth, 8u, "bit-depth of input file") … … 498 498 m_pchRowHeight = cfg_RowHeight.empty() ? NULL : strdup(cfg_RowHeight.c_str()); 499 499 m_scalingListFile = cfg_ScalingListFile.empty() ? NULL : strdup(cfg_ScalingListFile.c_str()); 500 500 501 501 if ( m_bUsingDepthMaps ) 502 502 { -
branches/HTM-4.0.1-VSP-dev0/source/App/TAppEncoder/TAppEncTop.cpp
r102 r166 697 697 #endif 698 698 699 #if VSP_N 700 #if NTT_SUBPEL 701 m_cVSPRendererTop.init(m_iSourceWidth, m_iSourceHeight, true, 0, LOG2_DISP_PREC_LUT, true, 0, 0, 0, 0, 0, 6, 5, 1, 0, 6 ); 702 #else 703 m_cVSPRendererTop.init(m_iSourceWidth, m_iSourceHeight, true, 0, LOG2_DISP_PREC_LUT, true, 0, 0, 0, 0, 0, 6, 4, 1, 0, 6 ); 704 #endif 705 #endif 699 706 } 700 707 … … 822 829 TComPicYuv* pcPicYuvRec = NULL; 823 830 TComPicYuv* pcDepthPicYuvRec = NULL; 824 831 825 832 // initialize internal class & member variables 826 833 xInitLibCfg(); … … 918 925 if ( iNextPoc < m_iFrameToBeEncoded ) 919 926 { 920 m_cCameraData.update( iNextPoc );927 m_cCameraData.update( iNextPoc ); 921 928 } 922 929 for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ ) … … 930 937 #endif 931 938 iNumEncoded = 0; 939 940 #if VSP_SLICE_HEADER 941 m_acTEncTopList [iViewIdx]->setUseVSP( (gopId%VSP_FRAME_INTERVAL==0) ); 942 m_acTEncDepthTopList[iViewIdx]->setUseVSP( (gopId%VSP_FRAME_INTERVAL==0) ); 943 #endif 944 945 #if VSP_N 946 #if VSP_SLICE_HEADER 947 if( m_acTEncTopList[iViewIdx]->getUseVSP() ) 948 #endif 949 if( m_bUsingDepthMaps ) 950 { 951 // Forward Warping 952 xStoreVSPInBuffer(m_acTEncTopList[iViewIdx]->getVSPBuf(), m_acTEncTopList[iViewIdx]->getVSPAvailBuf(), iViewIdx, false, gopId); 953 } 954 #endif 932 955 // call encoding function for one frame 933 956 m_acTEncTopList[iViewIdx]->encode( eos[iViewIdx], pcPicYuvOrg, *m_picYuvRec[iViewIdx], outputAccessUnits, iNumEncoded, gopId ); … … 937 960 { 938 961 Int iNumDepthEncoded = 0; 962 #if VSP_N 963 #if VSP_SLICE_HEADER 964 if( m_acTEncDepthTopList[iViewIdx]->getUseVSP() ) 965 #endif 966 xStoreVSPInBuffer(m_acTEncDepthTopList[iViewIdx]->getVSPBuf(), m_acTEncDepthTopList[iViewIdx]->getVSPAvailBuf(), iViewIdx, true, gopId); 967 #endif 939 968 // call encoding function for one depth frame 940 969 m_acTEncDepthTopList[iViewIdx]->encode( depthEos[iViewIdx], pcDepthPicYuvOrg, *m_picYuvDepthRec[iViewIdx], outputAccessUnits, iNumDepthEncoded, gopId ); … … 1377 1406 }; 1378 1407 1408 #if VSP_N 1409 Void TAppEncTop::xStoreVSPInBuffer(TComPic* pcPicVSP, TComPic* pcPicAvail, Int iCodedViewIdx, Bool bDepth, Int gopId) 1410 { 1411 //first view does not have VSP 1412 #if VSP_TEXT_ONLY 1413 if((iCodedViewIdx == 0)||(bDepth)) 1414 #else 1415 if((iCodedViewIdx == 0)) 1416 #endif 1417 return; 1418 1419 AOT( iCodedViewIdx <= 0); 1420 AOT( iCodedViewIdx >= m_iNumberOfViews ); 1421 1422 Int iCurPoc; 1423 //getting currrent POC and checking if the frame will be coded 1424 if(bDepth) 1425 { 1426 iCurPoc = m_acTEncDepthTopList[iCodedViewIdx]->getFrameId(gopId); 1427 if(iCurPoc>=m_acTEncDepthTopList[iCodedViewIdx]->getFrameToBeEncoded()) 1428 return; 1429 //if(!(m_acTEncDepthTopList[iCodedViewIdx]->currentPocWillBeCoded())) 1430 // return; 1431 } 1432 else 1433 { 1434 iCurPoc = m_acTEncTopList[iCodedViewIdx]->getFrameId(gopId); 1435 if(iCurPoc>=m_acTEncTopList[iCodedViewIdx]->getFrameToBeEncoded()) 1436 return; 1437 //if(!(m_acTEncTopList[iCodedViewIdx]->currentPocWillBeCoded())) 1438 // return; 1439 } 1440 pcPicVSP->getSlice(0)->setPOC( iCurPoc ); 1441 1442 Int iNeighborViewId = 0; 1443 Bool bRenderFromLeft; 1444 //check if the neighboring view is situated to the left of the current view 1445 bRenderFromLeft = ((m_cCameraData.getBaseSortedId2Id()[iCodedViewIdx]-m_cCameraData.getBaseSortedId2Id()[iNeighborViewId])>0); 1446 //pointers to buffers 1447 TComPicYuv* pcPicYuvVideo = xGetPicYuvFromView(iNeighborViewId, iCurPoc, bDepth, true ); 1448 TComPicYuv* pcPicYuvDepth = xGetPicYuvFromView(iNeighborViewId, iCurPoc, true, true ); 1449 TComPicYuv* pcPicYuvVSP = pcPicVSP->getPicYuvRec(); 1450 TComPicYuv* pcPicYuvAvail = pcPicAvail->getPicYuvRec(); 1451 //verifying buffers 1452 AOF(pcPicYuvVideo); 1453 AOF(pcPicYuvDepth); 1454 AOF(pcPicYuvVSP); 1455 AOF(pcPicYuvAvail); 1456 1457 TComPic* pcPic = getPicFromView( iCodedViewIdx, iCurPoc, bDepth ); 1458 pcPic->setPicYuvSynth( pcPicYuvVSP ); 1459 pcPic->setPicYuvAvail( pcPicYuvAvail ); 1460 1461 //setting look-up table 1462 #if 0 1463 m_cVSPRendererTop.setShiftLUTs( 1464 m_cCameraData.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 1465 m_cCameraData.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 1466 m_cCameraData.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 1467 m_cCameraData.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 1468 m_cCameraData.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 1469 m_cCameraData.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 1470 -1 1471 ); 1472 #else 1473 #if NTT_SUBPEL 1474 m_cVSPRendererTop.setShiftLUTs( 1475 m_cCameraData.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 1476 m_cCameraData.getBaseViewIPelLUT ()[iNeighborViewId][iCodedViewIdx], 1477 NULL, 1478 m_cCameraData.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 1479 m_cCameraData.getBaseViewIPelLUT ()[iNeighborViewId][iCodedViewIdx], 1480 NULL, 1481 -1 1482 ); 1483 m_cVSPRendererTop.setFposLUTs( 1484 m_cCameraData.getBaseViewFPosLUT()[iNeighborViewId][iCodedViewIdx], 1485 m_cCameraData.getBaseViewFPosLUT()[iNeighborViewId][iCodedViewIdx] 1486 ); 1487 #else 1488 m_cVSPRendererTop.setShiftLUTs( 1489 m_cCameraData.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 1490 m_cCameraData.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 1491 NULL, 1492 m_cCameraData.getBaseViewShiftLUTD()[iNeighborViewId][iCodedViewIdx], 1493 m_cCameraData.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx], 1494 NULL, 1495 -1 1496 ); 1497 #endif 1498 #endif 1499 1500 #if NTT_SUBPEL 1501 m_cVSPRendererTop.setInterpolationMode( (bDepth ? 0 : 5) ); 1502 #endif 1503 1504 //extrapolate from view iNeighborViewId to the current view, storing in the VSP buffer 1505 //m_cVSPRendererTop.extrapolateView(pcPicYuvVideo,pcPicYuvDepth, pcPicYuvVSP, bRenderFromLeft); 1506 m_cVSPRendererTop.extrapolateAvailabilityView(pcPicYuvVideo,pcPicYuvDepth, pcPicYuvVSP, pcPicYuvAvail, bRenderFromLeft); 1507 1508 1509 // mark it should be extended 1510 pcPicVSP->getPicYuvRec()->setBorderExtension(false); 1511 pcPicVSP->getPicYuvRec()->extendPicBorder();//will extend the border for prediction using pixels outside the frame (done at the slice level as well 1512 pcPicAvail->getPicYuvRec()->setBorderExtension(false); 1513 pcPicAvail->getPicYuvRec()->extendPicBorder(); 1514 1515 #if VSP_N_DUMP 1516 { 1517 Char acFilenameBase[1024]; 1518 ::sprintf(acFilenameBase,"VSP_enc_%sv%d_%dx%d.yuv",(bDepth?"D":"T"),iCodedViewIdx,m_iSourceWidth, m_iSourceHeight); 1519 pcPicYuvVSP->dump(acFilenameBase,iCurPoc!=0); 1520 //pcPicYuvAvail->dump(acFilenameBase,iCurPoc!=0); 1521 } 1522 #endif 1523 1524 } 1525 #endif 1526 1379 1527 //! \} -
branches/HTM-4.0.1-VSP-dev0/source/App/TAppEncoder/TAppEncTop.h
r102 r166 99 99 TRenTop m_cUsedPelsRenderer; ///< renderer for used pels map 100 100 #endif 101 102 #if VSP_N 103 TRenTop m_cVSPRendererTop; 104 #endif 105 101 106 protected: 102 107 // initialization … … 162 167 #endif 163 168 169 #if VSP_N 170 Void xStoreVSPInBuffer(TComPic* pcPicVSP, TComPic* pcPicAvail, Int iCodedViewIdx, Bool bDepth, Int gopId); 171 #endif 164 172 };// END CLASS DEFINITION TAppEncTop 165 173
Note: See TracChangeset for help on using the changeset viewer.