Showing the changes to codec/encoder/plus/src/welsEncoderExt.cpp (1 of 5 files). Show all
Unified · Split
| @@ -356,22 +356,23 @@ int CWelsH264SVCEncoder::InitializeInternal (SWelsSvcCodingParam* pCfg) { · 355 unmodified lines | ||
| 356 | 356 | if (pCfg->iUsageType == SCREEN_CONTENT_REAL_TIME) { |
| 357 | 357 | if (pCfg->bEnableLongTermReference) { |
| 358 | 358 | pCfg->iLTRRefNum = WELS_CLIP3 (pCfg->iLTRRefNum, 1, LONG_TERM_REF_NUM_SCREEN); |
| 359 | − if (pCfg->iNumRefFrame == AUTO_REF_PIC_COUNT) | |
| 359 | + if(pCfg->iNumRefFrame == AUTO_REF_PIC_COUNT) | |
| 360 | 360 | pCfg->iNumRefFrame = WELS_MAX (1, WELS_LOG2 (pCfg->uiGopSize)) + pCfg->iLTRRefNum; |
| 361 | 361 | } else { |
| 362 | 362 | pCfg->iLTRRefNum = 0; |
| 363 | − if (pCfg->iNumRefFrame == AUTO_REF_PIC_COUNT) | |
| 364 | − pCfg->iNumRefFrame = WELS_MAX (1, pCfg->uiGopSize >> 1); | |
| 363 | + if(pCfg->iNumRefFrame == AUTO_REF_PIC_COUNT) | |
| 364 | + pCfg->iNumRefFrame = WELS_MAX (1, pCfg->uiGopSize >> 1);; | |
| 365 | 365 | } |
| 366 | 366 | } else { |
| 367 | 367 | pCfg->iLTRRefNum = pCfg->bEnableLongTermReference ? WELS_CLIP3 (pCfg->iLTRRefNum, 1, LONG_TERM_REF_NUM) : 0; |
| 368 | − if (pCfg->iNumRefFrame == AUTO_REF_PIC_COUNT) { | |
| 368 | + if(pCfg->iNumRefFrame == AUTO_REF_PIC_COUNT){ | |
| 369 | 369 | pCfg->iNumRefFrame = ((pCfg->uiGopSize >> 1) > 1) ? ((pCfg->uiGopSize >> 1) + pCfg->iLTRRefNum) : |
| 370 | − (MIN_REF_PIC_COUNT + pCfg->iLTRRefNum); | |
| 370 | + (MIN_REF_PIC_COUNT + pCfg->iLTRRefNum); | |
| 371 | 371 | pCfg->iNumRefFrame = WELS_CLIP3 (pCfg->iNumRefFrame, MIN_REF_PIC_COUNT, MAX_REFERENCE_PICTURE_COUNT_NUM); |
| 372 | 372 | } |
| 373 | 373 | } |
| 374 | − | |
| 374 | + if(pCfg->iNumRefFrame > pCfg->iMaxNumRefFrame) | |
| 375 | + pCfg->iMaxNumRefFrame = pCfg->iNumRefFrame; | |
| 375 | 376 | if (pCfg->iLtrMarkPeriod == 0) { |
| 376 | 377 | pCfg->iLtrMarkPeriod = 30; |
| 377 | 378 | } |
| @@ -559,23 +560,29 @@ void CWelsH264SVCEncoder::CheckProfileSetting (int32_t iLayer, EProfileIdc uiPro · 181 unmodified lines | ||
| 559 | 560 | pLayerInfo->uiProfileIdc = uiProfileIdc; |
| 560 | 561 | if ((iLayer == SPATIAL_LAYER_0) && (uiProfileIdc != PRO_BASELINE)) { |
| 561 | 562 | pLayerInfo->uiProfileIdc = PRO_BASELINE; |
| 562 | − WelsLog (m_pEncContext, WELS_LOG_WARNING, "doesn't support profile(%d),change to baseline profile", uiProfileIdc); | |
| 563 | + WelsLog (m_pEncContext, WELS_LOG_WARNING, "doesn't support profile(%d),change to baseline profile\n", uiProfileIdc); | |
| 563 | 564 | } |
| 564 | 565 | if (iLayer > SPATIAL_LAYER_0) { |
| 565 | 566 | if ((uiProfileIdc != PRO_BASELINE) || (uiProfileIdc != PRO_SCALABLE_BASELINE)) { |
| 566 | 567 | pLayerInfo->uiProfileIdc = PRO_BASELINE; |
| 567 | − WelsLog (m_pEncContext, WELS_LOG_WARNING, "doesn't support profile(%d),change to baseline profile", uiProfileIdc); | |
| 568 | + WelsLog (m_pEncContext, WELS_LOG_WARNING, "doesn't support profile(%d),change to baseline profile\n", uiProfileIdc); | |
| 568 | 569 | } |
| 569 | 570 | } |
| 570 | 571 | } |
| 571 | 572 | void CWelsH264SVCEncoder::CheckLevelSetting (int32_t iLayer, ELevelIdc uiLevelIdc) { |
| 572 | 573 | SSpatialLayerConfig* pLayerInfo = &m_pEncContext->pSvcParam->sSpatialLayers[iLayer]; |
| 573 | 574 | pLayerInfo->uiLevelIdc = uiLevelIdc; |
| 574 | − //TBD | |
| 575 | + if( (uiLevelIdc< LEVEL_1_0)||(uiLevelIdc >LEVEL_5_2)){ | |
| 576 | + pLayerInfo->uiLevelIdc = LEVEL_5_2; | |
| 577 | + WelsLog (m_pEncContext, WELS_LOG_WARNING, "doesn't support level(%d) change to LEVEL_5_2\n",uiLevelIdc); | |
| 578 | + } | |
| 575 | 579 | } |
| 576 | 580 | void CWelsH264SVCEncoder::CheckReferenceNumSetting (int32_t iNumRef) { |
| 577 | 581 | m_pEncContext->pSvcParam->iNumRefFrame = iNumRef; |
| 578 | − //TBD | |
| 582 | + if((iNumRef < MIN_REF_PIC_COUNT)||(iNumRef> MAX_REFERENCE_PICTURE_COUNT_NUM)){ | |
| 583 | + m_pEncContext->pSvcParam->iNumRefFrame = AUTO_REF_PIC_COUNT; | |
| 584 | + WelsLog (m_pEncContext, WELS_LOG_WARNING, "doesn't support the number of reference frame(%d) change to auto select mode\n",iNumRef); | |
| 585 | + } | |
| 579 | 586 | } |
| 580 | 587 | /************************************************************************ |
| 581 | 588 | * InDataFormat, IDRInterval, SVC Encode Param, Frame Rate, Bitrate,.. |