Changeset 1057 in SHVCSoftware for branches/SHM-dev/source/App/TAppEncoder
- Timestamp:
- 4 Mar 2015, 09:55:40 (10 years ago)
- Location:
- branches/SHM-dev/source/App/TAppEncoder
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp
r1045 r1057 772 772 string* cfg_ReconFile [MAX_LAYERS]; 773 773 Double* cfg_fQP [MAX_LAYERS]; 774 Int* cfg_layerId [MAX_LAYERS]; 774 775 #if REPN_FORMAT_IN_VPS 775 776 Int* cfg_repFormatIdx [MAX_LAYERS]; … … 911 912 cfg_repFormatIdx[layer] = &m_acLayerCfg[layer].m_repFormatIdx; 912 913 #endif 914 cfg_layerId[layer] = &m_acLayerCfg[layer].m_layerId; 913 915 cfg_SourceWidth[layer] = &m_acLayerCfg[layer].m_iSourceWidth; 914 916 cfg_SourceHeight[layer] = &m_acLayerCfg[layer].m_iSourceHeight; … … 1122 1124 ("RepFormatIdx%d", cfg_repFormatIdx, -1, MAX_LAYERS, "Index to the representation format structure used from the VPS") 1123 1125 #endif 1126 ("LayerId%d", cfg_layerId, -1, MAX_LAYERS, "Layer id") 1124 1127 #if VPS_EXTN_DIRECT_REF_LAYERS 1125 1128 ("NumSamplePredRefLayers%d", cfg_numSamplePredRefLayers, -1, MAX_LAYERS, "Number of sample prediction reference layers") … … 1130 1133 ("PredLayerIds%d", cfg_predLayerIdsPtr, string(""), MAX_LAYERS, "inter-layer prediction layer IDs") 1131 1134 #endif 1132 ("NumLayers", m_numLayers, 1, "Number of layers to code") 1135 ("NumLayers", m_numLayers, 1, "Number of layers to code") 1133 1136 #if Q0078_ADD_LAYER_SETS 1134 1137 #if OUTPUT_LAYER_SETS_CONFIG … … 4601 4604 for(Int i = 0; i < m_acLayerCfg[layerIdx].m_numSamplePredRefLayers; i++) 4602 4605 { 4603 xConfirmPara(m_acLayerCfg[layerIdx].m_samplePredRefLayerIds[i] > layerIdx, "Cannot reference higher layers");4604 xConfirmPara(m_acLayerCfg[layerIdx].m_samplePredRefLayerIds[i] == layerIdx, "Cannot reference the current layer itself");4606 xConfirmPara(m_acLayerCfg[layerIdx].m_samplePredRefLayerIds[i] > m_acLayerCfg[layerIdx].m_layerId, "Cannot reference higher layers"); 4607 xConfirmPara(m_acLayerCfg[layerIdx].m_samplePredRefLayerIds[i] == m_acLayerCfg[layerIdx].m_layerId, "Cannot reference the current layer itself"); 4605 4608 } 4606 4609 } … … 4612 4615 for(Int i = 0; i < m_acLayerCfg[layerIdx].m_numMotionPredRefLayers; i++) 4613 4616 { 4614 xConfirmPara(m_acLayerCfg[layerIdx].m_motionPredRefLayerIds[i] > layerIdx, "Cannot reference higher layers");4615 xConfirmPara(m_acLayerCfg[layerIdx].m_motionPredRefLayerIds[i] == layerIdx, "Cannot reference the current layer itself");4617 xConfirmPara(m_acLayerCfg[layerIdx].m_motionPredRefLayerIds[i] > m_acLayerCfg[layerIdx].m_layerId, "Cannot reference higher layers"); 4618 xConfirmPara(m_acLayerCfg[layerIdx].m_motionPredRefLayerIds[i] == m_acLayerCfg[layerIdx].m_layerId, "Cannot reference the current layer itself"); 4616 4619 } 4617 4620 } -
branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h
r1045 r1057 61 61 #if SVC_EXTENSION 62 62 TAppEncLayerCfg m_acLayerCfg [MAX_LAYERS]; 63 Int m_layerId; 63 64 Int m_numLayers; ///< number of layers 64 65 Int m_scalabilityMask[MAX_VPS_NUM_SCALABILITY_TYPES]; ///< scalability_mask … … 577 578 #if SVC_EXTENSION 578 579 Int getNumFrameToBeEncoded() {return m_framesToBeEncoded; } 579 Int getNumLayer() {return m_numLayers; }580 Int getNumLayer() {return m_numLayers; } 580 581 Int getGOPSize() {return m_iGOPSize; } 581 582 #if O0194_DIFFERENT_BITDEPTH_EL_BL -
branches/SHM-dev/source/App/TAppEncoder/TAppEncLayerCfg.h
r1030 r1057 30 30 string m_cInputFile; ///< source file name 31 31 string m_cReconFile; ///< output reconstruction file 32 32 Int m_layerId; ///< layer Id 33 33 Int m_iFrameRate; ///< source frame-rates (Hz) 34 34 Int m_iSourceWidth; ///< source width in pixel … … 209 209 Int getNumActiveRefLayers() {return m_numActiveRefLayers;} 210 210 Int* getPredLayerIds() {return m_predLayerIds; } 211 Int getPredLayerId (Int i){return m_predLayerIds[i]; }211 Int getPredLayerIdx(Int i) {return m_predLayerIds[i]; } 212 212 #endif 213 213 #if RC_SHVC_HARMONIZATION -
branches/SHM-dev/source/App/TAppEncoder/TAppEncTop.cpp
r1045 r1057 301 301 #endif 302 302 // set layer ID 303 m_acTEncTop[layer].setLayerId ( layer);304 m_acTEncTop[layer].setNumLayer ( m_numLayers );305 m_acTEncTop[layer].setLayerEnc (m_apcTEncTop);303 m_acTEncTop[layer].setLayerId ( m_acLayerCfg[layer].m_layerId == -1 ? layer : m_acLayerCfg[layer].m_layerId ); 304 m_acTEncTop[layer].setNumLayer ( m_numLayers ); 305 m_acTEncTop[layer].setLayerEnc ( m_apcTEncTop ); 306 306 307 307 //====== Coding Structure ======== … … 354 354 if(layer) 355 355 { 356 UInt prevLayerIdx = m_acLayerCfg[layer].getPredLayerIdx(m_acLayerCfg[layer].getNumActiveRefLayers() - 1); 357 UInt prevLayerId = m_acTEncTop[layer].getRefLayerId(prevLayerIdx); 358 356 359 for(Int i = 0; i < MAX_VPS_LAYER_IDX_PLUS1; i++) 357 360 { … … 363 366 // Not included in the configuration file; assume that each layer depends on previous layer 364 367 m_acTEncTop[layer].setNumSamplePredRefLayers (1); // One sample pred ref. layer 365 m_acTEncTop[layer].setSamplePredRefLayerId ( 0, layer - 1); // Previous layer366 m_acTEncTop[layer].setSamplePredEnabledFlag ( layer - 1, true);368 m_acTEncTop[layer].setSamplePredRefLayerId (prevLayerIdx, prevLayerId); // Previous layer 369 m_acTEncTop[layer].setSamplePredEnabledFlag (prevLayerIdx, true); 367 370 } 368 371 else … … 372 375 { 373 376 m_acTEncTop[layer].setSamplePredRefLayerId ( i, m_acLayerCfg[layer].getSamplePredRefLayerId(i)); 374 m_acTEncTop[layer].setSamplePredEnabledFlag (m_acLayerCfg[layer].getSamplePredRefLayerId(i), true);375 377 } 376 378 } … … 379 381 // Not included in the configuration file; assume that each layer depends on previous layer 380 382 m_acTEncTop[layer].setNumMotionPredRefLayers (1); // One motion pred ref. layer 381 m_acTEncTop[layer].setMotionPredRefLayerId ( 0, layer - 1); // Previous layer382 m_acTEncTop[layer].setMotionPredEnabledFlag ( layer - 1, true);383 m_acTEncTop[layer].setMotionPredRefLayerId (prevLayerIdx, prevLayerId); // Previous layer 384 m_acTEncTop[layer].setMotionPredEnabledFlag (prevLayerIdx, true); 383 385 } 384 386 else … … 388 390 { 389 391 m_acTEncTop[layer].setMotionPredRefLayerId ( i, m_acLayerCfg[layer].getMotionPredRefLayerId(i)); 390 m_acTEncTop[layer].setMotionPredEnabledFlag (m_acLayerCfg[layer].getMotionPredRefLayerId(i), true);391 392 } 392 393 } … … 395 396 assert( layer < MAX_LAYERS ); 396 397 397 for (Int i = 0; i < layer; i++) 398 { 399 if (m_acTEncTop[layer].getSamplePredEnabledFlag(i) || m_acTEncTop[layer].getMotionPredEnabledFlag(i)) 398 for (Int i = 0; i < m_acLayerCfg[layer].m_layerId; i++) 399 { 400 Int refLayerId = -1; 401 402 for( Int layerIdc = 0; layerIdc < m_acTEncTop[layer].getNumSamplePredRefLayers(); layerIdc++ ) 400 403 { 401 m_acTEncTop[layer].setRefLayerId (numDirectRefLayers, i); 404 if( m_acLayerCfg[layer].getSamplePredRefLayerId(layerIdc) == i ) 405 { 406 refLayerId = i; 407 m_acTEncTop[layer].setSamplePredEnabledFlag( numDirectRefLayers, true ); 408 break; 409 } 410 } 411 412 for( Int layerIdc = 0; layerIdc < m_acTEncTop[layer].getNumMotionPredRefLayers(); layerIdc++ ) 413 { 414 if( m_acLayerCfg[layer].getMotionPredRefLayerId(layerIdc) == i ) 415 { 416 refLayerId = i; 417 m_acTEncTop[layer].setMotionPredEnabledFlag( numDirectRefLayers, true ); 418 break; 419 } 420 } 421 422 if( refLayerId >= 0 ) 423 { 424 m_acTEncTop[layer].setRefLayerId ( numDirectRefLayers, refLayerId ); 402 425 numDirectRefLayers++; 403 426 } 404 427 } 405 m_acTEncTop[layer].setNumDirectRefLayers (numDirectRefLayers); 428 429 m_acTEncTop[layer].setNumDirectRefLayers ( numDirectRefLayers ); 406 430 407 431 if(m_acLayerCfg[layer].getNumActiveRefLayers() == -1) … … 410 434 for( Int i = 0; i < m_acTEncTop[layer].getNumActiveRefLayers(); i++ ) 411 435 { 412 m_acTEncTop[layer].setPredLayerId (i, i);436 m_acTEncTop[layer].setPredLayerIdx(i, i); 413 437 } 414 438 } … … 418 442 for(Int i = 0; i < m_acTEncTop[layer].getNumActiveRefLayers(); i++) 419 443 { 420 m_acTEncTop[layer].setPredLayerId ( i, m_acLayerCfg[layer].getPredLayerId(i));444 m_acTEncTop[layer].setPredLayerIdx ( i, m_acLayerCfg[layer].getPredLayerIdx(i)); 421 445 } 422 446 } … … 1266 1290 for(i = 1; i < vps->getMaxLayers(); i++) 1267 1291 { 1268 vps->setLayerIdInNuh(i, i);1292 vps->setLayerIdInNuh(i, m_acLayerCfg[i].m_layerId); 1269 1293 vps->setLayerIdxInVps(vps->getLayerIdInNuh(i), i); 1270 1294 vps->setDimensionId(i, 0, i); 1295 1296 if( m_acLayerCfg[i].m_layerId != i ) 1297 { 1298 vps->setNuhLayerIdPresentFlag(true); 1299 } 1271 1300 } 1272 1301 … … 1296 1325 1297 1326 #if VPS_EXTN_OP_LAYER_SETS 1298 vps->setMaxLayerId( m_numLayers - 1); // Set max-layer ID1327 vps->setMaxLayerId( m_acLayerCfg[m_numLayers - 1].m_layerId ); // Set max-layer ID 1299 1328 1300 1329 vps->setVpsExtensionFlag( m_numLayers > 1 ? true : false ); … … 1529 1558 Bool isDefaultDirectDependencyTypeSet = false; 1530 1559 #endif 1531 for (UInt layerCtr = 1; layerCtr < = vps->getMaxLayers() - 1; layerCtr++)1560 for (UInt layerCtr = 1; layerCtr < vps->getMaxLayers(); layerCtr++) 1532 1561 { 1533 1562 UInt layerId = vps->getLayerIdInNuh(layerCtr); 1534 1563 vps->setNumDirectRefLayers(layerId, m_acTEncTop[layerCtr].getNumDirectRefLayers()); 1535 maxDirectRefLayers = max<UInt>(maxDirectRefLayers, vps->getNumDirectRefLayers(layer Ctr));1536 1537 for (i = 0; i < vps->getNumDirectRefLayers(layer Ctr); i++)1564 maxDirectRefLayers = max<UInt>(maxDirectRefLayers, vps->getNumDirectRefLayers(layerId)); 1565 1566 for (i = 0; i < vps->getNumDirectRefLayers(layerId); i++) 1538 1567 { 1539 1568 vps->setRefLayerId(layerId, i, m_acTEncTop[layerCtr].getRefLayerId(i)); … … 1545 1574 vps->setDirectDependencyFlag(layerCtr, refLayerCtr, false); 1546 1575 } 1547 for (i = 0; i < vps->getNumDirectRefLayers(layer Ctr); i++)1576 for (i = 0; i < vps->getNumDirectRefLayers(layerId); i++) 1548 1577 { 1549 1578 vps->setDirectDependencyFlag(layerCtr, vps->getLayerIdxInVps(m_acTEncTop[layerCtr].getRefLayerId(i)), true);
Note: See TracChangeset for help on using the changeset viewer.