Changeset 655 in 3DVCSoftware for trunk/source/App/TAppEncoder
- Timestamp:
- 23 Oct 2013, 23:01:30 (11 years ago)
- Location:
- trunk/source/App/TAppEncoder
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/App/TAppEncoder/TAppEncCfg.cpp
r622 r655 82 82 m_codedPivotValue = NULL; 83 83 m_targetPivotValue = NULL; 84 85 #if KWU_RC_MADPRED_E0227 86 m_depthMADPred = 0; 87 #endif 84 88 } 85 89 … … 224 228 in>>entry.m_interViewRefPosL[1][i]; 225 229 } 226 #if !H_MV5227 if (entry.m_numActiveRefLayerPics > 0 )228 {229 in>>entry.m_collocatedRefLayerIdx;230 }231 #endif232 230 #endif 233 231 return in; … … 369 367 ("NumberOfLayers", m_numberOfLayers , 1, "Number of layers") 370 368 #if !H_3D 371 #if H_MV5372 369 ("ScalabilityMask", m_scalabilityMask , 2 , "Scalability Mask") 373 #else374 ("ScalabilityMask", m_scalabilityMask , 1 , "Scalability Mask")375 #endif376 370 #else 377 371 ("ScalabilityMask", m_scalabilityMask , 3 , "Scalability Mask, 1: Texture 3: Texture + Depth ") 378 372 #endif 379 373 ("DimensionIdLen", m_dimensionIdLen , cfg_dimensionLength , "Number of bits used to store dimensions Id") 380 #if H_MV5381 374 ("ViewOrderIndex", m_viewOrderIndex , std::vector<Int>(1,0), "View Order Index per layer") 382 375 ("ViewId", m_viewId , std::vector<Int>(1,0), "View Id per View Order Index") 383 #else384 ("ViewId", m_viewId , std::vector<Int>(1,0), "View Id")385 #endif386 376 #if H_3D 387 377 ("DepthFlag", m_depthFlag , std::vector<Int>(1,0), "Depth Flag") … … 428 418 ("FramesToBeEncoded,f", m_framesToBeEncoded, 0, "Number of frames to be encoded (default=all)") 429 419 420 //Field coding parameters 421 ("FieldCoding", m_isField, false, "Signals if it's a field based coding") 422 ("TopFieldFirst, Tff", m_isTopFieldFirst, false, "In case of field based coding, signals whether if it's a top field first or not") 423 430 424 // Profile and level 431 425 ("Profile", m_profile, Profile::NONE, "Profile to be used when encoding (Incomplete)") … … 517 511 ("IlluCompEnable", m_abUseIC, std::vector<Bool>(2, true), "Enable illumination compensation") 518 512 #endif 519 #if LGE_INTER_SDC_E0156513 #if H_3D_INTER_SDC 520 514 ("InterSDC", m_bDepthInterSDCFlag, true, "Enable depth inter SDC") 521 515 #endif … … 594 588 ( "InitialQP", m_RCInitialQP, 0, "Rate control: initial QP" ) 595 589 ( "RCForceIntraQP", m_RCForceIntraQP, false, "Rate control: force intra QP to be equal to initial QP" ) 590 591 #if KWU_RC_VIEWRC_E0227 592 ("ViewWiseTargetBits, -vtbr" , m_viewTargetBits, std::vector<Int>(1, 32), "View-wise target bit-rate setting") 593 ("TargetBitAssign, -ta", m_viewWiseRateCtrl, false, "View-wise rate control on/off") 594 #endif 595 #if KWU_RC_MADPRED_E0227 596 ("DepthMADPred, -dm", m_depthMADPred, (UInt)0, "Depth based MAD prediction on/off") 597 #endif 596 598 #else 597 599 ("RateCtrl,-rc", m_enableRateCtrl, false, "Rate control on/off") 598 600 ("TargetBitrate,-tbr", m_targetBitrate, 0, "Input target bitrate") 599 601 ("NumLCUInUnit,-nu", m_numLCUInUnit, 0, "Number of LCUs in an Unit") 600 #endif 601 602 #if H_MV5 602 603 #if KWU_RC_VIEWRC_E0227 604 ("ViewWiseTargetBits, -vtbr" , m_viewTargetBits, std::vector<Int>(1, 32), "View-wise target bit-rate setting") 605 ("TargetBitAssign, -ta", m_viewWiseRateCtrl, false, "View-wise rate control on/off") 606 #endif 607 #if KWU_RC_MADPRED_E0227 608 ("DepthMADPred, -dm", m_depthMADPred, (UInt)0, "Depth based MAD prediction on/off") 609 #endif 610 #endif 611 603 612 #if H_MV 604 613 // VPS VUI … … 617 626 ("CtuBasedOffsetEnabledFlag" , m_ctuBasedOffsetEnabledFlag , std::vector< Bool >(1,0) ,MAX_NUM_LAYERS , "CtuBasedOffsetEnabledFlag per direct reference for the N-th layer") 618 627 ("MinHorizontalCtuOffsetPlus1" , m_minHorizontalCtuOffsetPlus1 , std::vector< Int >(1,0) ,MAX_NUM_LAYERS , "MinHorizontalCtuOffsetPlus1 per direct reference for the N-th layer") 619 #endif620 628 #endif 621 629 … … 762 770 if( k == 0 ) 763 771 { 764 #if H_MV5765 772 m_GOPListMvc[0][0].m_sliceType = 'I'; 766 #endif767 773 for( Int i = 1; i < MAX_GOP + 1; i++ ) 768 774 { … … 810 816 const list<const Char*>& argv_unhandled = po::scanArgv(opts, argc, (const Char**) argv); 811 817 818 if(m_isField) 819 { 820 //Frame height 821 m_iSourceHeightOrg = m_iSourceHeight; 822 //Field height 823 m_iSourceHeight = m_iSourceHeight >> 1; 824 //number of fields to encode 825 m_framesToBeEncoded *= 2; 826 } 827 812 828 for (list<const Char*>::const_iterator it = argv_unhandled.begin(); it != argv_unhandled.end(); it++) 813 829 { … … 928 944 m_aiPad[1] = m_confBottom = ((m_iSourceHeight / minCuSize) + 1) * minCuSize - m_iSourceHeight; 929 945 m_iSourceHeight += m_confBottom; 946 if ( m_isField ) 947 { 948 m_iSourceHeightOrg += m_confBottom << 1; 949 m_aiPad[1] = m_confBottom << 1; 950 } 930 951 } 931 952 if (m_aiPad[0] % TComSPS::getWinUnitX(CHROMA_420) != 0) … … 968 989 // allocate slice-based dQP values 969 990 #if H_MV 970 #if H_MV5971 991 xResizeVector( m_viewOrderIndex ); 972 992 … … 988 1008 #if H_3D 989 1009 xResizeVector( m_depthFlag ); 990 #endif991 #else992 xResizeVector( m_viewId );993 #if H_3D994 xResizeVector( m_depthFlag );995 996 std::vector<Int> uniqueViewIds;997 for( Int layer = 0; layer < m_numberOfLayers; layer++ )998 {999 Bool isIn = false;1000 for ( Int i = 0 ; i < uniqueViewIds.size(); i++ )1001 {1002 isIn = isIn || ( m_viewId[ layer ] == uniqueViewIds[ i ] );1003 }1004 if ( !isIn )1005 {1006 uniqueViewIds.push_back( m_viewId[ layer ] );1007 }1008 }1009 m_iNumberOfViews = (Int) uniqueViewIds.size();1010 #endif1011 1012 1010 #endif 1013 1011 xResizeVector( m_fQP ); … … 1283 1281 xConfirmPara( (m_layerIdInNuh.size()!=1) && (m_layerIdInNuh.size() < m_numberOfLayers) , "LayerIdInNuh must be given for all layers. "); 1284 1282 1285 #if H_MV51286 1283 #if H_3D 1287 1284 xConfirmPara( m_scalabilityMask != 2 && m_scalabilityMask != 3, "Scalability Mask must be equal to 2 or 3. "); … … 1298 1295 1299 1296 m_dimIds.push_back( m_viewOrderIndex ); 1300 #else1301 #if H_3D1302 xConfirmPara( m_scalabilityMask != 1 && m_scalabilityMask != 3, "Scalability Mask must be equal to 1 or 3. ");1303 #else1304 xConfirmPara( m_scalabilityMask != 1 , "Scalability Mask must be equal to 1. ");1305 #endif1306 1307 m_dimIds.push_back( m_viewId );1308 const Int viewDimPosition = 0;1309 #if H_3D1310 if ( m_scalabilityMask & ( 1 << DEPTH_ID ) )1311 m_dimIds.push_back( m_depthFlag );1312 #endif1313 1314 #endif1315 1297 xConfirmPara( m_dimensionIdLen.size() < m_dimIds.size(), "DimensionIdLen must be given for all dimensions. " ); Int dimBitOffset[MAX_NUM_SCALABILITY_TYPES+1]; 1316 1298 … … 1329 1311 { 1330 1312 xConfirmPara( m_dimIds[j].size() < m_numberOfLayers, "DimensionId must be given for all layers and all dimensions. "); 1331 #if H_MV51332 1313 xConfirmPara( (m_dimIds[j][0] != 0) , "DimensionId of layer 0 must be 0. " ); 1333 #else1334 xConfirmPara( ( j != viewDimPosition ) && (m_dimIds[j][0] != 0), "DimensionId of layer 0 must be 0. " );1335 #endif1336 1314 xConfirmPara( m_dimensionIdLen[j] < 1 || m_dimensionIdLen[j] > 8, "DimensionIdLen must be greater than 0 and less than 9 in all dimensions. " ); 1337 1315 … … 1372 1350 xConfirmPara( allEqual , "Each layer shall have a different position in scalability space." ); 1373 1351 1352 #if !H_3D_FCO 1374 1353 if ( numDiff == 1 ) 1375 1354 { 1376 1355 Bool inc = m_dimIds[ lastDiff ][ i ] > m_dimIds[ lastDiff ][ j ]; 1377 #if H_MV51378 1356 Bool shallBeButIsNotIncreasing = ( !inc ) ; 1379 #else1380 Bool shallBeButIsNotIncreasing = ( !inc && ( lastDiff != viewDimPosition ) ) ;1381 #endif1382 1357 if ( shallBeButIsNotIncreasing ) 1383 1358 { 1384 1359 printf( "\nError: Positions of Layers %d and %d is not increasing in dimension %d \n", i, j, lastDiff); 1385 1360 } 1386 #if H_MV51387 1361 xConfirmPara( shallBeButIsNotIncreasing, "DimensionIds shall be increasing within one dimension. " ); 1388 #else1389 xConfirmPara( shallBeButIsNotIncreasing && ( lastDiff != viewDimPosition ), "DimensionIds shall be increasing within one dimension. " );1390 #endif1391 1362 } 1363 #endif 1392 1364 } 1393 1365 } 1394 1366 1395 #if H_MV51396 1367 /// ViewId 1397 1368 xConfirmPara( m_viewId.size() != m_iNumberOfViews, "The number of ViewIds must be equal to the number of views." ); … … 1399 1370 /// Layer sets 1400 1371 xConfirmPara( m_vpsNumLayerSets < 0 || m_vpsNumLayerSets > 1024, "VpsNumLayerSets must be greater than 0 and less than 1025. ") ; 1401 #else1402 xConfirmPara( m_vpsNumLayerSets < 0 || m_vpsNumLayerSets > 1024, "VpsNumLayerSets must be greater than 0 and less than 1025") ;1403 #endif1404 1372 for( Int lsIdx = 0; lsIdx < m_vpsNumLayerSets; lsIdx++ ) 1405 1373 { … … 1743 1711 Bool errorGOP=false; 1744 1712 Int checkGOP=1; 1745 Int numRefs = 1;1713 Int numRefs = m_isField ? 2 : 1; 1746 1714 Int refList[MAX_NUM_REF_PICS+1]; 1747 1715 refList[0]=0; 1716 if(m_isField) 1717 { 1718 refList[1] = 1; 1719 } 1748 1720 Bool isOK[MAX_GOP]; 1749 1721 for(Int i=0; i<MAX_GOP; i++) … … 2157 2129 xConfirmPara( (numLCUInPic % m_numLCUInUnit) != 0, "total number of LCUs in a frame should be completely divided by NumLCUInUnit" ); 2158 2130 2131 #if !KWU_FIX_URQ 2159 2132 m_iMaxDeltaQP = MAX_DELTA_QP; 2133 #endif 2160 2134 m_iMaxCuDQPDepth = MAX_CUDQP_DEPTH; 2161 2135 } 2162 2136 #endif 2163 #if H_MV52164 2137 #if H_MV 2165 2138 // VPS VUI … … 2184 2157 } 2185 2158 #endif 2186 #endif2187 2159 2188 2160 xConfirmPara(!m_TransquantBypassEnableFlag && m_CUTransquantBypassFlagValue, "CUTransquantBypassFlagValue cannot be 1 when TransquantBypassEnableFlag is 0"); … … 2250 2222 #endif 2251 2223 #if H_MV 2252 #if H_MV52253 2224 xPrintParaVector( "ViewIdVal" , m_viewId ); 2254 2225 xPrintParaVector( "ViewOrderIndex", m_viewOrderIndex ); 2255 #else2256 xPrintParaVector( "ViewId", m_viewId );2257 #endif2258 2226 #endif 2259 2227 #if H_3D … … 2268 2236 printf("Real Format : %dx%d %dHz\n", m_iSourceWidth - m_confLeft - m_confRight, m_iSourceHeight - m_confTop - m_confBottom, m_iFrameRate ); 2269 2237 printf("Internal Format : %dx%d %dHz\n", m_iSourceWidth, m_iSourceHeight, m_iFrameRate ); 2238 if (m_isField) 2239 { 2240 printf("Frame/Field : Field based coding\n"); 2241 printf("Field index : %u - %d (%d fields)\n", m_FrameSkip, m_FrameSkip+m_framesToBeEncoded-1, m_framesToBeEncoded ); 2242 if (m_isTopFieldFirst) 2243 { 2244 printf("Field Order : Top field first\n"); 2245 } 2246 else 2247 { 2248 printf("Field Order : Bottom field first\n"); 2249 } 2250 } 2251 else 2252 { 2253 printf("Frame/Field : Frame based coding\n"); 2270 2254 printf("Frame index : %u - %d (%d frames)\n", m_FrameSkip, m_FrameSkip+m_framesToBeEncoded-1, m_framesToBeEncoded ); 2255 } 2271 2256 printf("CU size / depth : %d / %d\n", m_uiMaxCUWidth, m_uiMaxCUDepth ); 2272 2257 printf("RQT trans. size (min / max) : %d / %d\n", 1 << m_uiQuadtreeTULog2MinSize, 1 << m_uiQuadtreeTULog2MaxSize ); … … 2299 2284 printf("InitialQP : %d\n", m_RCInitialQP ); 2300 2285 printf("ForceIntraQP : %d\n", m_RCForceIntraQP ); 2286 2287 #if KWU_RC_MADPRED_E0227 2288 printf("Depth based MAD prediction : %d\n", m_depthMADPred); 2289 #endif 2290 #if KWU_RC_VIEWRC_E0227 2291 printf("View-wise Rate control : %d\n", m_viewWiseRateCtrl); 2292 if(m_viewWiseRateCtrl) 2293 { 2294 2295 printf("ViewWiseTargetBits : "); 2296 for (Int i = 0 ; i < m_iNumberOfViews ; i++) 2297 printf("%d ", m_viewTargetBits[i]); 2298 printf("\n"); 2299 } 2300 else 2301 { 2302 printf("TargetBitrate : %d\n", m_RCTargetBitrate ); 2303 } 2304 #endif 2301 2305 } 2302 2306 #else … … 2306 2310 printf("TargetBitrate : %d\n", m_targetBitrate); 2307 2311 printf("NumLCUInUnit : %d\n", m_numLCUInUnit); 2312 2313 #if KWU_RC_MADPRED_E0227 2314 printf("Depth based MAD prediction : %d\n", m_depthMADPred); 2315 #endif 2316 #if KWU_RC_VIEWRC_E0227 2317 printf("View-wise Rate control : %d\n", m_viewWiseRateCtrl); 2318 if(m_viewWiseRateCtrl) 2319 { 2320 2321 printf("ViewWiseTargetBits : "); 2322 for (Int i = 0 ; i < m_iNumberOfViews ; i++) 2323 printf("%d ", m_viewTargetBits[i]); 2324 printf("\n"); 2325 } 2326 else 2327 { 2328 printf("TargetBitrate : %d\n", m_targetBitrate ); 2329 } 2330 #endif 2308 2331 } 2309 2332 #endif … … 2414 2437 printf("DLT:%d ", m_useDLT ); 2415 2438 #endif 2416 #if LGE_INTER_SDC_E01562439 #if H_3D_INTER_SDC 2417 2440 printf( "interSDC: %d ", m_bDepthInterSDCFlag ? 1 : 0 ); 2418 2441 #endif -
trunk/source/App/TAppEncoder/TAppEncCfg.h
r622 r655 69 69 std::vector<char*> m_pchReconFileList; ///< output reconstruction file names 70 70 Int m_numberOfLayers; ///< number of Layers to Encode 71 #if H_MV572 71 Int m_iNumberOfViews; ///< number of Layers that are views 73 #else74 #if H_3D75 Int m_iNumberOfViews; ///< number of Layers that are views76 #endif77 #endif78 72 #else 79 73 Char* m_pchReconFile; ///< output reconstruction file … … 83 77 std::vector< std::vector<Int> > m_dimIds; ///< dimension ids ( pointers to m_viewId and m_depthFlag 84 78 std::vector<Int> m_viewId; ///< view id 85 #if H_MV586 79 std::vector<Int> m_viewOrderIndex; ///< view order index 87 #endif88 80 #if H_3D 89 81 std::vector<Int> m_depthFlag; ///< depth flag … … 106 98 std::vector< std::vector<Int> > m_dependencyTypes; ///< Dependency types of direct reference layers 107 99 108 #if H_MV5109 100 // VPS VUI 110 101 Bool m_vpsVuiPresentFlag; … … 122 113 std::vector< std::vector<Bool > > m_ctuBasedOffsetEnabledFlag; 123 114 std::vector< std::vector<Int > > m_minHorizontalCtuOffsetPlus1; 124 #endif125 115 126 116 #if H_3D_IV_MERGE … … 149 139 UInt m_FrameSkip; ///< number of skipped frames from the beginning 150 140 Int m_iSourceWidth; ///< source width in pixel 151 Int m_iSourceHeight; ///< source height in pixel 141 Int m_iSourceHeight; ///< source height in pixel (when interlaced = field height) 142 143 Int m_iSourceHeightOrg; ///< original source height in pixel (when interlaced = frame height) 144 145 bool m_isField; ///< enable field coding 146 bool m_isTopFieldFirst; 147 152 148 Int m_conformanceMode; 153 149 Int m_confLeft; … … 367 363 Int m_RCInitialQP; ///< inital QP for rate control 368 364 Bool m_RCForceIntraQP; ///< force all intra picture to use initial QP or not 365 366 #if KWU_RC_VIEWRC_E0227 367 vector<Int> m_viewTargetBits; 368 Bool m_viewWiseRateCtrl; ///< Flag for using view-wise rate control 369 #endif 370 #if KWU_RC_MADPRED_E0227 371 UInt m_depthMADPred; 372 #endif 369 373 #else 370 374 Bool m_enableRateCtrl; ///< Flag for using rate control algorithm 371 375 Int m_targetBitrate; ///< target bitrate 372 376 Int m_numLCUInUnit; ///< Total number of LCUs in a frame should be completely divided by the NumLCUInUnit 377 378 #if KWU_RC_VIEWRC_E0227 379 vector<Int> m_viewTargetBits; 380 Bool m_viewWiseRateCtrl; ///< Flag for using view-wise rate control 381 #endif 382 #if KWU_RC_MADPRED_E0227 383 UInt m_depthMADPred; 384 #endif 373 385 #endif 374 386 Int m_useScalingListId; ///< using quantization matrix … … 457 469 Bool m_bUsePC; ///< flag for using Predictive Coding with QTL 458 470 #endif 459 #if LGE_INTER_SDC_E0156471 #if H_3D_INTER_SDC 460 472 Bool m_bDepthInterSDCFlag; ///< flag for inter SDC of depth map coding 461 473 #endif -
trunk/source/App/TAppEncoder/TAppEncTop.cpp
r622 r655 88 88 vps.setTemporalNestingFlag(true); 89 89 } 90 #if H_MV591 90 vps.setMaxLayersMinus1( m_numberOfLayers - 1); 92 #else93 vps.setMaxLayers( m_numberOfLayers );94 #endif95 91 for(Int i = 0; i < MAX_TLAYER; i++) 96 92 { … … 124 120 xSetDependencies( vps ); 125 121 xSetProfileTierLevel ( vps ); 126 #if H_MV5127 122 xSetRepFormat ( vps ); 128 #endif129 123 xSetLayerSets ( vps ); 130 #if H_MV5131 124 xSetVPSVUI ( vps ); 132 #endif133 125 #if H_3D 134 #if !H_MV5135 vps.initViewIndex();136 #endif137 126 xSetVPSExtension2 ( vps ); 138 127 m_ivPicLists.setVPS ( &vps ); … … 140 129 141 130 142 #if H_MV5143 131 for(Int layerIdInVps = 0; layerIdInVps < m_numberOfLayers; layerIdInVps++) 144 #else145 for(Int layer = 0; layer < m_numberOfLayers; layer++)146 #endif147 132 { 148 133 m_frameRcvd .push_back(0); … … 151 136 m_acTVideoIOYuvReconFileList.push_back(new TVideoIOYuv); 152 137 m_picYuvRec .push_back(new TComList<TComPicYuv*>) ; 153 #if H_MV5154 138 m_ivPicLists.push_back( m_acTEncTopList[ layerIdInVps ]->getListPic() ); 155 139 TEncTop& m_cTEncTop = *m_acTEncTopList[ layerIdInVps ]; // It is not a member, but this name helps avoiding code duplication !!! … … 160 144 m_cTEncTop.setViewId ( vps.getViewId ( layerId ) ); 161 145 m_cTEncTop.setViewIndex ( vps.getViewIndex ( layerId ) ); 162 #else163 m_ivPicLists.push_back( m_acTEncTopList[ layer ]->getListPic() );164 TEncTop& m_cTEncTop = *m_acTEncTopList[ layer ]; // It is not a member, but this name helps avoiding code duplication !!!165 166 m_cTEncTop.setLayerIdInVps ( layer );167 m_cTEncTop.setLayerId ( vps.getLayerIdInNuh( layer ) );168 m_cTEncTop.setViewId ( vps.getViewId ( layer ) );169 170 #endif171 146 #if H_3D 172 #if H_MV5173 147 Bool isDepth = ( vps.getDepthId ( layerId ) != 0 ) ; 174 #else175 Bool isDepth = ( vps.getDepthId ( layer ) != 0 ) ;176 m_cTEncTop.setViewIndex ( vps.getViewIndex ( layer ) );177 #endif178 148 m_cTEncTop.setIsDepth ( isDepth ); 179 149 //====== Camera Parameters ========= … … 201 171 m_cTEncTop.setDWeight ( isDepth ? m_iDWeight : 0 ); 202 172 #endif // H_3D_VSO 203 #if H_MV5204 173 #if H_3D_ARP 205 174 //====== Advanced Inter-view Residual Prediction ========= … … 209 178 #if H_3D_IC 210 179 m_cTEncTop.setUseIC ( vps.getViewIndex( layerId ) == 0 ? false : m_abUseIC[isDepth ? 1 : 0] ); 211 #endif212 #else213 #if H_3D_ARP214 //====== Advanced Inter-view Residual Prediction =========215 m_cTEncTop.setUseAdvRP ( ( isDepth || 0==layer ) ? 0 : m_uiUseAdvResPred );216 m_cTEncTop.setARPStepNum ( ( isDepth || 0==layer ) ? 1 : H_3D_ARP_WFNR );217 #endif218 #if H_3D_IC219 m_cTEncTop.setUseIC ( vps.getViewIndex( layer ) == 0 ? false : m_abUseIC[isDepth ? 1 : 0] );220 #endif221 180 #endif 222 181 //========== Depth intra modes ========== … … 232 191 #endif 233 192 //====== Depth Inter SDC ========= 234 #if LGE_INTER_SDC_E0156193 #if H_3D_INTER_SDC 235 194 m_cTEncTop.setInterSDCEnable ( isDepth ? m_bDepthInterSDCFlag : false ); 236 195 #endif … … 260 219 m_cTEncTop.setGOPSize ( m_iGOPSize ); 261 220 #if H_MV 262 #if H_MV5263 221 m_cTEncTop.setGopList ( m_GOPListMvc[layerIdInVps] ); 264 222 m_cTEncTop.setExtraRPSs ( m_extraRPSsMvc[layerIdInVps] ); … … 269 227 } 270 228 #else 271 m_cTEncTop.setGopList ( m_GOPListMvc[layer] );272 m_cTEncTop.setExtraRPSs ( m_extraRPSsMvc[layer] );273 for(Int i = 0; i < MAX_TLAYER; i++)274 {275 m_cTEncTop.setNumReorderPics ( m_numReorderPicsMvc[layer][i], i );276 m_cTEncTop.setMaxDecPicBuffering ( m_maxDecPicBufferingMvc[layer][i], i );277 }278 #endif279 #else280 229 m_cTEncTop.setGopList ( m_GOPList ); 281 230 m_cTEncTop.setExtraRPSs ( m_extraRPSs ); … … 291 240 } 292 241 #if H_MV 293 #if H_MV5294 242 m_cTEncTop.setQP ( m_iQP[layerIdInVps] ); 295 243 #else 296 m_cTEncTop.setQP ( m_iQP[layer] );297 #endif298 #else299 244 m_cTEncTop.setQP ( m_iQP ); 300 245 #endif … … 303 248 304 249 #if H_MV 305 #if H_MV5306 250 m_cTEncTop.setMaxTempLayer ( m_maxTempLayerMvc[layerIdInVps] ); 307 251 #else 308 m_cTEncTop.setMaxTempLayer ( m_maxTempLayerMvc[layer] );309 #endif310 #else311 252 m_cTEncTop.setMaxTempLayer ( m_maxTempLayer ); 312 253 #endif … … 317 258 //====== Loop/Deblock Filter ======== 318 259 #if H_MV 319 #if H_MV5320 260 m_cTEncTop.setLoopFilterDisable ( m_bLoopFilterDisable[layerIdInVps]); 321 #else322 m_cTEncTop.setLoopFilterDisable ( m_bLoopFilterDisable[layer]);323 #endif324 261 #else 325 262 m_cTEncTop.setLoopFilterDisable ( m_bLoopFilterDisable ); … … 351 288 352 289 #if H_MV 353 #if H_MV5354 290 if ((m_iMaxDeltaQP == 0 ) && (m_iQP[layerIdInVps] == lowestQP) && (m_useLossless == true)) 355 #else356 if ((m_iMaxDeltaQP == 0 ) && (m_iQP[layer] == lowestQP) && (m_useLossless == true))357 #endif358 291 #else 359 292 if ((m_iMaxDeltaQP == 0 ) && (m_iQP == lowestQP) && (m_useLossless == true)) … … 372 305 m_cTEncTop.setUseLossless ( m_useLossless ); 373 306 #if H_MV 374 #if H_MV5375 307 m_cTEncTop.setdQPs ( m_aidQP[layerIdInVps] ); 376 #else377 m_cTEncTop.setdQPs ( m_aidQP[layer] );378 #endif379 308 #else 380 309 m_cTEncTop.setdQPs ( m_aidQP ); … … 435 364 m_cTEncTop.setLFCrossSliceBoundaryFlag( m_bLFCrossSliceBoundaryFlag ); 436 365 #if H_MV 437 #if H_MV5438 366 m_cTEncTop.setUseSAO ( m_bUseSAO[layerIdInVps] ); 439 #else440 m_cTEncTop.setUseSAO ( m_bUseSAO[layer] );441 #endif442 367 #else 443 368 m_cTEncTop.setUseSAO ( m_bUseSAO ); … … 512 437 m_cTEncTop.setSignHideFlag(m_signHideFlag); 513 438 #if RATE_CONTROL_LAMBDA_DOMAIN 514 m_cTEncTop.setUseRateCtrl ( m_RCEnableRateControl ); 439 #if KWU_RC_VIEWRC_E0227 || KWU_RC_MADPRED_E0227 440 if(!m_cTEncTop.getIsDepth()) //only for texture 441 { 442 m_cTEncTop.setUseRateCtrl ( m_RCEnableRateControl ); 443 } 444 else 445 { 446 m_cTEncTop.setUseRateCtrl ( 0 ); 447 } 448 #else 449 m_cTEncTop.setUseRateCtrl ( m_RCEnableRateControl ); 450 #endif 451 #if !KWU_RC_VIEWRC_E0227 515 452 m_cTEncTop.setTargetBitrate ( m_RCTargetBitrate ); 453 #endif 516 454 m_cTEncTop.setKeepHierBit ( m_RCKeepHierarchicalBit ); 517 455 m_cTEncTop.setLCULevelRC ( m_RCLCULevelRC ); … … 519 457 m_cTEncTop.setInitialQP ( m_RCInitialQP ); 520 458 m_cTEncTop.setForceIntraQP ( m_RCForceIntraQP ); 521 #else 522 m_cTEncTop.setUseRateCtrl ( m_enableRateCtrl); 523 m_cTEncTop.setTargetBitrate ( m_targetBitrate); 524 m_cTEncTop.setNumLCUInUnit ( m_numLCUInUnit); 459 460 #if KWU_RC_MADPRED_E0227 461 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 462 { 463 m_cTEncTop.setUseDepthMADPred(layerIdInVps ? m_depthMADPred : 0); 464 465 if(m_cTEncTop.getUseDepthMADPred()) 466 { 467 m_cTEncTop.setCamParam(&m_cCameraData); 468 } 469 } 470 #endif 471 #if KWU_RC_VIEWRC_E0227 472 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 473 { 474 m_cTEncTop.setUseViewWiseRateCtrl(m_viewWiseRateCtrl); 475 476 if(m_iNumberOfViews == 1) 477 { 478 if(m_viewWiseRateCtrl) 479 { 480 m_cTEncTop.setTargetBitrate(m_viewTargetBits[layerIdInVps>>1]); 481 } 482 else 483 { 484 m_cTEncTop.setTargetBitrate ( m_RCTargetBitrate ); 485 } 486 } 487 else 488 { 489 if(m_viewWiseRateCtrl) 490 { 491 m_cTEncTop.setTargetBitrate(m_viewTargetBits[layerIdInVps>>1]); 492 } 493 else 494 { 495 if(m_iNumberOfViews == 2) 496 { 497 if(m_cTEncTop.getViewId() == 0) 498 { 499 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*80)/100 ); 500 } 501 else if(m_cTEncTop.getViewId() == 1) 502 { 503 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*20)/100 ); 504 } 505 } 506 else if(m_iNumberOfViews == 3) 507 { 508 if(m_cTEncTop.getViewId() == 0) 509 { 510 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*66)/100 ); 511 } 512 else if(m_cTEncTop.getViewId() == 1) 513 { 514 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*17)/100 ); 515 } 516 else if(m_cTEncTop.getViewId() == 2) 517 { 518 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*17)/100 ); 519 } 520 } 521 else 522 { 523 m_cTEncTop.setTargetBitrate ( m_RCTargetBitrate ); 524 } 525 } 526 } 527 } 528 #endif 529 #else 530 #if KWU_RC_VIEWRC_E0227 || KWU_RC_MADPRED_E0227 531 if(!m_cTEncTop.getIsDepth()) //only for texture 532 { 533 m_cTEncTop.setUseRateCtrl ( m_enableRateCtrl ); 534 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 535 m_cTEncTop.setNumLCUInUnit ( m_numLCUInUnit); 536 } 537 else 538 { 539 m_cTEncTop.setUseRateCtrl ( 0 ); 540 } 541 #else 542 m_cTEncTop.setUseRateCtrl ( m_enableRateCtrl ); 543 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 544 m_cTEncTop.setNumLCUInUnit ( m_numLCUInUnit); 545 #endif 546 547 548 #if KWU_RC_MADPRED_E0227 549 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 550 { 551 m_cTEncTop.setUseDepthMADPred(layerIdInVps ? m_depthMADPred : 0); 552 553 if(m_cTEncTop.getUseDepthMADPred()) 554 { 555 m_cTEncTop.setCamParam(&m_cCameraData); 556 } 557 } 558 #endif 559 560 #if KWU_RC_VIEWRC_E0227 561 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 562 { 563 m_cTEncTop.setUseViewWiseRateCtrl(m_viewWiseRateCtrl); 564 if(m_iNumberOfViews == 1) 565 { 566 if(m_viewWiseRateCtrl) 567 { 568 m_cTEncTop.setTargetBitrate(m_viewTargetBits[layerIdInVps>>1]); 569 } 570 else 571 { 572 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 573 } 574 } 575 else 576 { 577 if(m_viewWiseRateCtrl) 578 { 579 m_cTEncTop.setTargetBitrate(m_viewTargetBits[layerIdInVps>>1]); 580 } 581 else 582 { 583 if(m_iNumberOfViews == 2) 584 { 585 if(m_cTEncTop.getViewId() == 0) 586 { 587 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*80)/100 ); 588 } 589 else if(m_cTEncTop.getViewId() == 1) 590 { 591 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*20)/100 ); 592 } 593 } 594 else if(m_iNumberOfViews == 3) 595 { 596 if(m_cTEncTop.getViewId() == 0) 597 { 598 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*66)/100 ); 599 } 600 else if(m_cTEncTop.getViewId() == 1) 601 { 602 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*17)/100 ); 603 } 604 else if(m_cTEncTop.getViewId() == 2) 605 { 606 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*17)/100 ); 607 } 608 } 609 else 610 { 611 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 612 } 613 } 614 } 615 } 616 #endif 525 617 #endif 526 618 m_cTEncTop.setTransquantBypassEnableFlag(m_TransquantBypassEnableFlag); … … 664 756 } 665 757 666 Void TAppEncTop::xInitLib( )758 Void TAppEncTop::xInitLib(Bool isFieldCoding) 667 759 { 668 760 #if H_MV 669 761 for(Int layer=0; layer<m_numberOfLayers; layer++) 670 762 { 671 m_acTEncTopList[layer]->init( ); 672 } 673 #else 674 m_cTEncTop.init(); 763 #if KWU_RC_MADPRED_E0227 764 m_acTEncTopList[layer]->init( isFieldCoding, this ); 765 #else 766 m_acTEncTopList[layer]->init( isFieldCoding ); 767 #endif 768 } 769 #else 770 m_cTEncTop.init( isFieldCoding ); 675 771 #endif 676 772 } … … 703 799 xInitLibCfg(); 704 800 xCreateLib(); 705 xInitLib( );801 xInitLib(m_isField); 706 802 707 803 // main encoder loop … … 728 824 729 825 // allocate original YUV buffer 826 if( m_isField ) 827 { 828 pcPicYuvOrg->create( m_iSourceWidth, m_iSourceHeightOrg, m_uiMaxCUWidth, m_uiMaxCUHeight, m_uiMaxCUDepth ); 829 } 830 else 831 { 730 832 pcPicYuvOrg->create( m_iSourceWidth, m_iSourceHeight, m_uiMaxCUWidth, m_uiMaxCUHeight, m_uiMaxCUDepth ); 833 } 731 834 732 835 #if H_MV … … 789 892 } 790 893 } 894 895 #if !RATE_CONTROL_LAMBDA_DOMAIN && KWU_FIX_URQ 896 for(Int layer=0; layer < m_numberOfLayers; layer++ ) 897 { 898 if(m_acTEncTopList[layer]->getUseRateCtrl() && !m_acTEncTopList[layer]->getIsDepth()) 899 { 900 m_acTEncTopList[layer]->getRateCtrl()->updateRCGOPStatus(); 901 } 902 } 903 #endif 904 791 905 gopSize = maxGopSize; 792 906 } 793 907 for(Int layer=0; layer < m_numberOfLayers; layer++ ) 794 908 { 795 m_acTEncTopList[layer]->printSummary( m_acTEncTopList[layer]->getNumAllPicCoded() );909 m_acTEncTopList[layer]->printSummary( m_acTEncTopList[layer]->getNumAllPicCoded(), m_isField ); 796 910 } 797 911 #else … … 807 921 m_iFrameRcvd++; 808 922 809 bEos = (m_i FrameRcvd == m_framesToBeEncoded);923 bEos = (m_isField && (m_iFrameRcvd == (m_framesToBeEncoded >> 1) )) || ( !m_isField && (m_iFrameRcvd == m_framesToBeEncoded) ); 810 924 811 925 Bool flush = 0; … … 820 934 821 935 // call encoding function for one frame 936 if ( m_isField ) 937 { 938 m_cTEncTop.encode( bEos, flush ? 0 : pcPicYuvOrg, m_cListPicYuvRec, outputAccessUnits, iNumEncoded, m_isTopFieldFirst); 939 } 940 else 941 { 822 942 m_cTEncTop.encode( bEos, flush ? 0 : pcPicYuvOrg, m_cListPicYuvRec, outputAccessUnits, iNumEncoded ); 943 } 823 944 824 945 // write bistream to file if necessary … … 830 951 } 831 952 832 m_cTEncTop.printSummary( );953 m_cTEncTop.printSummary(m_isField); 833 954 #endif 834 955 … … 941 1062 #endif 942 1063 { 943 Int i; 944 945 #if H_MV 946 if( iNumEncoded > 0 ) 947 { 948 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_picYuvRec[layerId]->end(); 949 #else 950 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_cListPicYuvRec.end(); 951 list<AccessUnit>::const_iterator iterBitstream = accessUnits.begin(); 952 #endif 953 954 for ( i = 0; i < iNumEncoded; i++ ) 955 { 956 --iterPicYuvRec; 957 } 958 959 for ( i = 0; i < iNumEncoded; i++ ) 960 { 961 TComPicYuv* pcPicYuvRec = *(iterPicYuvRec++); 1064 if (m_isField) 1065 { 1066 //Reinterlace fields 1067 Int i; 1068 #if H_MV 1069 if( iNumEncoded > 0 ) 1070 { 1071 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_picYuvRec[layerId]->end(); 1072 #else 1073 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_cListPicYuvRec.end(); 1074 list<AccessUnit>::const_iterator iterBitstream = accessUnits.begin(); 1075 #endif 1076 1077 for ( i = 0; i < iNumEncoded; i++ ) 1078 { 1079 --iterPicYuvRec; 1080 } 1081 1082 for ( i = 0; i < iNumEncoded/2; i++ ) 1083 { 1084 TComPicYuv* pcPicYuvRecTop = *(iterPicYuvRec++); 1085 TComPicYuv* pcPicYuvRecBottom = *(iterPicYuvRec++); 1086 962 1087 #if H_MV 963 1088 if (m_pchReconFileList[layerId]) 964 1089 { 965 m_acTVideoIOYuvReconFileList[layerId]->write( pcPicYuvRec, m_confLeft, m_confRight, m_confTop, m_confBottom ); 966 } 967 } 968 } 1090 m_acTVideoIOYuvReconFileList[layerId]->write( pcPicYuvRecTop, pcPicYuvRecBottom, m_confLeft, m_confRight, m_confTop, m_confBottom, m_isTopFieldFirst ); 1091 } 1092 } 1093 } 1094 969 1095 if( ! accessUnits.empty() ) 970 1096 { … … 972 1098 for( aUIter = accessUnits.begin(); aUIter != accessUnits.end(); aUIter++ ) 973 1099 { 1100 const vector<UInt>& stats = writeAnnexB(bitstreamFile, *aUIter); 1101 rateStatsAccum(*aUIter, stats); 1102 } 1103 } 1104 #else 1105 if (m_pchReconFile) 1106 { 1107 m_cTVideoIOYuvReconFile.write( pcPicYuvRecTop, pcPicYuvRecBottom, m_confLeft, m_confRight, m_confTop, m_confBottom, m_isTopFieldFirst ); 1108 } 1109 1110 const AccessUnit& auTop = *(iterBitstream++); 1111 const vector<UInt>& statsTop = writeAnnexB(bitstreamFile, auTop); 1112 rateStatsAccum(auTop, statsTop); 1113 1114 const AccessUnit& auBottom = *(iterBitstream++); 1115 const vector<UInt>& statsBottom = writeAnnexB(bitstreamFile, auBottom); 1116 rateStatsAccum(auBottom, statsBottom); 1117 } 1118 #endif 1119 } 1120 else 1121 { 1122 Int i; 1123 #if H_MV 1124 if( iNumEncoded > 0 ) 1125 { 1126 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_picYuvRec[layerId]->end(); 1127 #else 1128 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_cListPicYuvRec.end(); 1129 list<AccessUnit>::const_iterator iterBitstream = accessUnits.begin(); 1130 #endif 1131 1132 for ( i = 0; i < iNumEncoded; i++ ) 1133 { 1134 --iterPicYuvRec; 1135 } 1136 1137 for ( i = 0; i < iNumEncoded; i++ ) 1138 { 1139 TComPicYuv* pcPicYuvRec = *(iterPicYuvRec++); 1140 #if H_MV 1141 if (m_pchReconFileList[layerId]) 1142 { 1143 m_acTVideoIOYuvReconFileList[layerId]->write( pcPicYuvRec, m_confLeft, m_confRight, m_confTop, m_confBottom ); 1144 } 1145 } 1146 } 1147 if( ! accessUnits.empty() ) 1148 { 1149 list<AccessUnit>::iterator aUIter; 1150 for( aUIter = accessUnits.begin(); aUIter != accessUnits.end(); aUIter++ ) 1151 { 974 1152 const vector<unsigned>& stats = writeAnnexB(bitstreamFile, *aUIter); 975 1153 rateStatsAccum(*aUIter, stats); … … 977 1155 } 978 1156 #else 979 if (m_pchReconFile) 980 { 981 m_cTVideoIOYuvReconFile.write( pcPicYuvRec, m_confLeft, m_confRight, m_confTop, m_confBottom ); 982 } 983 984 const AccessUnit& au = *(iterBitstream++); 985 const vector<UInt>& stats = writeAnnexB(bitstreamFile, au); 986 rateStatsAccum(au, stats); 987 } 988 #endif 989 } 990 1157 if (m_pchReconFile) 1158 { 1159 m_cTVideoIOYuvReconFile.write( pcPicYuvRec, m_confLeft, m_confRight, m_confTop, m_confBottom ); 1160 } 1161 1162 const AccessUnit& au = *(iterBitstream++); 1163 const vector<UInt>& stats = writeAnnexB(bitstreamFile, au); 1164 rateStatsAccum(au, stats); 1165 } 1166 #endif 1167 } 1168 } 1169 991 1170 /** 992 1171 * … … 1121 1300 Void TAppEncTop::xSetDimensionIdAndLength( TComVPS& vps ) 1122 1301 { 1123 #if H_MV51124 1302 vps.setScalabilityMaskFlag( m_scalabilityMask ); 1125 #else1126 vps.setScalabilityMask( m_scalabilityMask );1127 #endif1128 1303 for( Int dim = 0; dim < m_dimIds.size(); dim++ ) 1129 1304 { 1130 1305 vps.setDimensionIdLen( dim, m_dimensionIdLen[ dim ] ); 1131 #if H_MV51132 1306 for( Int layer = 0; layer <= vps.getMaxLayersMinus1(); layer++ ) 1133 #else1134 for( Int layer = 0; layer < vps.getMaxLayers(); layer++ )1135 #endif1136 1307 1137 1308 { … … 1140 1311 } 1141 1312 1142 #if H_MV51143 1313 Int maxViewId = xGetMax( m_viewId ); 1144 1314 … … 1153 1323 1154 1324 assert( m_iNumberOfViews == vps.getNumViews() ); 1155 #endif1156 1325 } 1157 1326 … … 1180 1349 1181 1350 // Max temporal id for inter layer reference pictures + presence flag 1182 #if H_MV51183 1351 Bool maxTidRefPresentFlag = false; 1184 #endif1185 1352 for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++) 1186 1353 { … … 1203 1370 } 1204 1371 vps.setMaxTidIlRefPicPlus1( refLayerIdInVps, maxTid + 1 ); 1205 #if H_MV51206 1372 maxTidRefPresentFlag = maxTidRefPresentFlag || ( maxTid != 6 ); 1207 #endif 1208 } 1209 1210 #if H_MV5 1373 } 1374 1211 1375 vps.setMaxTidRefPresentFlag( maxTidRefPresentFlag ); 1212 #endif1213 1376 // Max one active ref layer flag 1214 1377 Bool maxOneActiveRefLayerFlag = true; 1215 #if H_MV51216 1378 for ( Int layerIdInVps = 1; layerIdInVps < m_numberOfLayers && maxOneActiveRefLayerFlag; layerIdInVps++) 1217 #else1218 for ( Int currLayerIdInVps = 1; currLayerIdInVps < m_numberOfLayers && maxOneActiveRefLayerFlag; currLayerIdInVps++)1219 #endif1220 1379 { 1221 1380 for( Int i = 0; i < ( getGOPSize() + 1) && maxOneActiveRefLayerFlag; i++ ) 1222 1381 { 1223 #if H_MV51224 1382 GOPEntry ge = m_GOPListMvc[layerIdInVps][ ( i < getGOPSize() ? i : MAX_GOP ) ]; 1225 #else1226 GOPEntry ge = m_GOPListMvc[currLayerIdInVps][ ( i < getGOPSize() ? i : MAX_GOP ) ];1227 #endif1228 1383 maxOneActiveRefLayerFlag = maxOneActiveRefLayerFlag && (ge.m_numActiveRefLayerPics <= 1); 1229 1384 } … … 1233 1388 1234 1389 1235 #if H_MV51236 1390 // All Ref layers active flag 1237 1391 Bool allRefLayersActiveFlag = true; … … 1249 1403 // Currently cross layer irap aligned is always true. 1250 1404 vps.setCrossLayerIrapAlignedFlag( true ); 1251 #endif1252 1405 vps.setRefLayers(); 1253 1406 }; 1254 1407 1255 #if H_MV51256 1408 GOPEntry* TAppEncTop::xGetGopEntry( Int layerIdInVps, Int poc ) 1257 1409 { … … 1268 1420 return geFound; 1269 1421 } 1270 #endif1271 1422 1272 1423 Void TAppEncTop::xSetLayerIds( TComVPS& vps ) … … 1308 1459 } 1309 1460 1310 #if H_MV51311 1461 1312 1462 Void TAppEncTop::xSetRepFormat( TComVPS& vps ) … … 1333 1483 } 1334 1484 } 1335 #endif1336 1485 1337 1486 Void TAppEncTop::xSetLayerSets( TComVPS& vps ) … … 1386 1535 } 1387 1536 } 1388 #if H_MV51389 1537 1390 1538 Void TAppEncTop::xSetVPSVUI( TComVPS& vps ) … … 1478 1626 } 1479 1627 #endif 1480 #endif1481 1628 #if H_3D 1482 1629 Void TAppEncTop::xSetVPSExtension2( TComVPS& vps ) 1483 1630 { 1484 #if H_MV51485 1631 1486 1632 for ( Int layer = 0; layer <= vps.getMaxLayersMinus1(); layer++ ) 1487 #else1488 for ( Int layer = 0; layer < vps.getMaxLayers(); layer++ )1489 #endif1490 1633 { 1491 1634 Bool isDepth = ( vps.getDepthId( layer ) == 1 ) ; … … 1517 1660 vps.setViewSynthesisPredFlag( layer, !isLayerZero && !isDepth && m_viewSynthesisPredFlag ); 1518 1661 #endif 1519 #if LGE_INTER_SDC_E01561662 #if H_3D_INTER_SDC 1520 1663 vps.setInterSDCFlag( layer, !isLayerZero && isDepth && m_bDepthInterSDCFlag ); 1521 1664 #endif -
trunk/source/App/TAppEncoder/TAppEncTop.h
r622 r655 50 50 #endif 51 51 52 #if KWU_RC_MADPRED_E0227 53 class TEncTop; 54 #endif 52 55 //! \ingroup TAppEncoder 53 56 //! \{ … … 93 96 Void xCreateLib (); ///< create files & encoder class 94 97 Void xInitLibCfg (); ///< initialize internal variables 95 Void xInitLib ( );///< initialize encoder class98 Void xInitLib (Bool isFieldCoding); ///< initialize encoder class 96 99 Void xDestroyLib (); ///< destroy encoder class 97 100 … … 121 124 Void xSetLayerSets ( TComVPS& vps ); 122 125 Void xSetProfileTierLevel ( TComVPS& vps ); 123 #if H_MV5124 126 Void xSetRepFormat ( TComVPS& vps ); 125 127 Void xSetVPSVUI ( TComVPS& vps ); 126 128 GOPEntry* xGetGopEntry( Int layerIdInVps, Int poc ); 127 #endif128 129 Int xGetMax( std::vector<Int>& vec); 129 130 #endif
Note: See TracChangeset for help on using the changeset viewer.