Showing the changes to codec/encoder/plus/src/welsEncoderExt.cpp (1 of 4 files). Show all
Unified · Split
| @@ -256,41 +256,6 @@ int CWelsH264SVCEncoder::InitializeInternal (SWelsSvcCodingParam* pCfg) { · 255 unmodified lines | |||
| 256 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, | 256 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, |
| 257 | "CWelsH264SVCEncoder::Initialize, m_uiCountFrameNum= %d, m_iCspInternal= 0x%x", | 257 | "CWelsH264SVCEncoder::Initialize, m_uiCountFrameNum= %d, m_iCspInternal= 0x%x", |
| 258 | m_uiCountFrameNum, m_iCspInternal); | 258 | m_uiCountFrameNum, m_iCspInternal); |
| 259 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, | ||
| 260 | "coding_param->iPicWidth= %d;coding_param->iPicHeight= %d;coding_param->iTargetBitrate= %d;coding_param->iRCMode= %d;coding_param->iTemporalLayerNum= %d;coding_param->iSpatialLayerNum= %d;coding_param->fFrameRate= %.6ff;coding_param->iInputCsp= %d;coding_param->uiIntraPeriod= %d;coding_param->bEnableSpsPpsIdAddition = %d;coding_param->bPrefixNalAddingCtrl = %d;coding_param->bEnableDenoise= %d;coding_param->bEnableBackgroundDetection= %d;coding_param->bEnableAdaptiveQuant= %d;coding_param->bEnableFrameSkip= %d;coding_param->bEnableCropPic= %d;coding_param->bEnableLongTermReference= %d;coding_param->iLtrMarkPeriod= %d;", | ||
| 261 | sEncodingParam.iPicWidth, | ||
| 262 | sEncodingParam.iPicHeight, | ||
| 263 | sEncodingParam.iTargetBitrate, | ||
| 264 | sEncodingParam.iRCMode, | ||
| 265 | sEncodingParam.iTemporalLayerNum, | ||
| 266 | sEncodingParam.iSpatialLayerNum, | ||
| 267 | sEncodingParam.fMaxFrameRate, | ||
| 268 | sEncodingParam.iInputCsp, | ||
| 269 | sEncodingParam.uiIntraPeriod, | ||
| 270 | sEncodingParam.bEnableSpsPpsIdAddition, | ||
| 271 | sEncodingParam.bPrefixNalAddingCtrl, | ||
| 272 | sEncodingParam.bEnableDenoise, | ||
| 273 | sEncodingParam.bEnableBackgroundDetection, | ||
| 274 | sEncodingParam.bEnableAdaptiveQuant, | ||
| 275 | sEncodingParam.bEnableFrameSkip, | ||
| 276 | sEncodingParam.bEnableCropPic, | ||
| 277 | sEncodingParam.bEnableLongTermReference, | ||
| 278 | sEncodingParam.iLtrMarkPeriod); | ||
| 279 | int32_t i = 0; | ||
| 280 | while (i < sEncodingParam.iSpatialLayerNum) { | ||
| 281 | SSpatialLayerConfig* spatial_cfg = &sEncodingParam.sSpatialLayers[i]; | ||
| 282 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, | ||
| 283 | "coding_param->sSpatialLayers[%d]: .iVideoWidth= %d; .iVideoHeight= %d; .fFrameRate= %.6ff; .iSpatialBitrate= %d; .sSliceCfg.uiSliceMode= %d; .sSliceCfg.sSliceArgument.uiSliceNum= %d; .sSliceCfg.sSliceArgument.uiSliceSizeConstraint= %d;", | ||
| 284 | i, spatial_cfg->iVideoWidth, | ||
| 285 | spatial_cfg->iVideoHeight, | ||
| 286 | spatial_cfg->fFrameRate, | ||
| 287 | spatial_cfg->iSpatialBitrate, | ||
| 288 | spatial_cfg->sSliceCfg.uiSliceMode, | ||
| 289 | spatial_cfg->sSliceCfg.sSliceArgument.uiSliceNum, | ||
| 290 | spatial_cfg->sSliceCfg.sSliceArgument.uiSliceSizeConstraint | ||
| 291 | ); | ||
| 292 | ++ i; | ||
| 293 | } | ||
| 294 | #endif//REC_FRAME_COUNT | 259 | #endif//REC_FRAME_COUNT |
| 295 | 260 | ||
| 296 | // Check valid parameters | 261 | // Check valid parameters |
| @@ -378,6 +343,7 @@ int CWelsH264SVCEncoder::InitializeInternal (SWelsSvcCodingParam* pCfg) { · 81 unmodified lines | |||
| 378 | m_iMaxPicWidth = pCfg->iPicWidth; | 343 | m_iMaxPicWidth = pCfg->iPicWidth; |
| 379 | m_iMaxPicHeight = pCfg->iPicHeight; | 344 | m_iMaxPicHeight = pCfg->iPicHeight; |
| 380 | 345 | ||
| 346 | TraceParamInfo(pCfg); | ||
| 381 | if (WelsInitEncoderExt (&m_pEncContext, pCfg, &m_pWelsTrace->m_sLogCtx)) { | 347 | if (WelsInitEncoderExt (&m_pEncContext, pCfg, &m_pWelsTrace->m_sLogCtx)) { |
| 382 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_ERROR, "CWelsH264SVCEncoder::Initialize(), WelsInitEncoderExt failed."); | 348 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_ERROR, "CWelsH264SVCEncoder::Initialize(), WelsInitEncoderExt failed."); |
| 383 | Uninitialize(); | 349 | Uninitialize(); |
| @@ -559,6 +525,60 @@ void CWelsH264SVCEncoder::CheckReferenceNumSetting (int32_t iNumRef) { · 175 unmodified lines | |||
| 559 | "doesn't support the number of reference frame(%d) change to auto select mode", iNumRef); | 525 | "doesn't support the number of reference frame(%d) change to auto select mode", iNumRef); |
| 560 | } | 526 | } |
| 561 | } | 527 | } |
| 528 | void CWelsH264SVCEncoder::TraceParamInfo(SEncParamExt *pParam){ | ||
| 529 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, | ||
| 530 | "iUsageType = %d,iPicWidth= %d;iPicHeight= %d;iTargetBitrate= %d;iMaxBitrate= %d;iRCMode= %d;iPaddingFlag= %d;iTemporalLayerNum= %d;iSpatialLayerNum= %d;fFrameRate= %.6ff;uiIntraPeriod= %d;\ | ||
| 531 | bEnableSpsPpsIdAddition = %d;bPrefixNalAddingCtrl = %d;bEnableDenoise= %d;bEnableBackgroundDetection= %d;bEnableAdaptiveQuant= %d;bEnableAdaptiveQuant= %d;bEnableLongTermReference= %d;iLtrMarkPeriod= %d;\ | ||
| 532 | iComplexityMode = %d;iNumRefFrame = %d;iEntropyCodingModeFlag = %d;bEnableFrameSkip = %d;uiMaxNalSize = %d;bEnableLongTermReference = %d;iLTRRefNum = %d;iMultipleThreadIdc = %d;iLoopFilterDisableIdc = %d", | ||
| 533 | pParam->iUsageType, | ||
| 534 | pParam->iPicWidth, | ||
| 535 | pParam->iPicHeight, | ||
| 536 | pParam->iTargetBitrate, | ||
| 537 | pParam->iMaxBitrate, | ||
| 538 | pParam->iRCMode, | ||
| 539 | pParam->iPaddingFlag, | ||
| 540 | pParam->iTemporalLayerNum, | ||
| 541 | pParam->iSpatialLayerNum, | ||
| 542 | pParam->fMaxFrameRate, | ||
| 543 | pParam->uiIntraPeriod, | ||
| 544 | pParam->bEnableSpsPpsIdAddition, | ||
| 545 | pParam->bPrefixNalAddingCtrl, | ||
| 546 | pParam->bEnableDenoise, | ||
| 547 | pParam->bEnableBackgroundDetection, | ||
| 548 | pParam->bEnableAdaptiveQuant, | ||
| 549 | pParam->bEnableFrameSkip, | ||
| 550 | pParam->bEnableLongTermReference, | ||
| 551 | pParam->iLtrMarkPeriod, | ||
| 552 | pParam->iComplexityMode, | ||
| 553 | pParam->iNumRefFrame, | ||
| 554 | pParam->iEntropyCodingModeFlag, | ||
| 555 | pParam->bEnableFrameSkip, | ||
| 556 | pParam->uiMaxNalSize, | ||
| 557 | pParam->bEnableLongTermReference, | ||
| 558 | pParam->iLTRRefNum, | ||
| 559 | pParam->iMultipleThreadIdc, | ||
| 560 | pParam->iLoopFilterDisableIdc | ||
| 561 | ); | ||
| 562 | int32_t i = 0; | ||
| 563 | while (i < pParam->iSpatialLayerNum) { | ||
| 564 | SSpatialLayerConfig* pSpatialCfg = &pParam->sSpatialLayers[i]; | ||
| 565 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, | ||
| 566 | "sSpatialLayers[%d]: .iVideoWidth= %d; .iVideoHeight= %d; .fFrameRate= %.6ff; .iSpatialBitrate= %d; .iMaxSpatialBitrate= %d; .sSliceCfg.uiSliceMode= %d; .sSliceCfg.sSliceArgument.iSliceNum= %d; .sSliceCfg.sSliceArgument.uiSliceSizeConstraint= %d;\ | ||
| 567 | uiProfileIdc = %d;uiLevelIdc = %d", | ||
| 568 | i, pSpatialCfg->iVideoWidth, | ||
| 569 | pSpatialCfg->iVideoHeight, | ||
| 570 | pSpatialCfg->fFrameRate, | ||
| 571 | pSpatialCfg->iSpatialBitrate, | ||
| 572 | pSpatialCfg->iMaxSpatialBitrate, | ||
| 573 | pSpatialCfg->sSliceCfg.uiSliceMode, | ||
| 574 | pSpatialCfg->sSliceCfg.sSliceArgument.uiSliceNum, | ||
| 575 | pSpatialCfg->sSliceCfg.sSliceArgument.uiSliceSizeConstraint, | ||
| 576 | pSpatialCfg->uiProfileIdc, | ||
| 577 | pSpatialCfg->uiLevelIdc | ||
| 578 | ); | ||
| 579 | ++ i; | ||
| 580 | } | ||
| 581 | } | ||
| 562 | /************************************************************************ | 582 | /************************************************************************ |
| 563 | * InDataFormat, IDRInterval, SVC Encode Param, Frame Rate, Bitrate,.. | 583 | * InDataFormat, IDRInterval, SVC Encode Param, Frame Rate, Bitrate,.. |
| 564 | ************************************************************************/ | 584 | ************************************************************************/ |
| @@ -624,42 +644,7 @@ int CWelsH264SVCEncoder::SetOption (ENCODER_OPTION eOptionId, void* pOption) { · 59 unmodified lines | |||
| 624 | int32_t iTargetHeight = 0; | 644 | int32_t iTargetHeight = 0; |
| 625 | 645 | ||
| 626 | memcpy (&sEncodingParam, pOption, sizeof (SEncParamExt)); // confirmed_safe_unsafe_usage | 646 | memcpy (&sEncodingParam, pOption, sizeof (SEncParamExt)); // confirmed_safe_unsafe_usage |
| 627 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, | 647 | TraceParamInfo(&sEncodingParam); |
| 628 | "coding_param->iPicWidth= %d;coding_param->iPicHeight= %d;coding_param->iTargetBitrate= %d; coding_param->iMaxBitrate= %d; coding_param->iRCMode= %d;coding_param->iPaddingFlag= %d;coding_param->iTemporalLayerNum= %d;coding_param->iSpatialLayerNum= %d;coding_param->fFrameRate= %.6ff;coding_param->uiIntraPeriod= %d;coding_param->bEnableSpsPpsIdAddition = %d;coding_param->bPrefixNalAddingCtrl = %d;coding_param->bEnableDenoise= %d;coding_param->bEnableBackgroundDetection= %d;coding_param->bEnableAdaptiveQuant= %d;coding_param->bEnableAdaptiveQuant= %d;coding_param->bEnableLongTermReference= %d;coding_param->iLtrMarkPeriod= %d;", | ||
| 629 | sEncodingParam.iPicWidth, | ||
| 630 | sEncodingParam.iPicHeight, | ||
| 631 | sEncodingParam.iTargetBitrate, | ||
| 632 | sEncodingParam.iMaxBitrate, | ||
| 633 | sEncodingParam.iRCMode, | ||
| 634 | sEncodingParam.iPaddingFlag, | ||
| 635 | sEncodingParam.iTemporalLayerNum, | ||
| 636 | sEncodingParam.iSpatialLayerNum, | ||
| 637 | sEncodingParam.fMaxFrameRate, | ||
| 638 | sEncodingParam.uiIntraPeriod, | ||
| 639 | sEncodingParam.bEnableSpsPpsIdAddition, | ||
| 640 | sEncodingParam.bPrefixNalAddingCtrl, | ||
| 641 | sEncodingParam.bEnableDenoise, | ||
| 642 | sEncodingParam.bEnableBackgroundDetection, | ||
| 643 | sEncodingParam.bEnableAdaptiveQuant, | ||
| 644 | sEncodingParam.bEnableFrameSkip, | ||
| 645 | sEncodingParam.bEnableLongTermReference, | ||
| 646 | sEncodingParam.iLtrMarkPeriod); | ||
| 647 | int32_t i = 0; | ||
| 648 | while (i < sEncodingParam.iSpatialLayerNum) { | ||
| 649 | SSpatialLayerConfig* pSpatialCfg = &sEncodingParam.sSpatialLayers[i]; | ||
| 650 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, | ||
| 651 | "coding_param->sSpatialLayers[%d]: .iVideoWidth= %d; .iVideoHeight= %d; .fFrameRate= %.6ff; .iSpatialBitrate= %d; .iMaxSpatialBitrate= %d; .sSliceCfg.uiSliceMode= %d; .sSliceCfg.sSliceArgument.iSliceNum= %d; .sSliceCfg.sSliceArgument.uiSliceSizeConstraint= %d;", | ||
| 652 | i, pSpatialCfg->iVideoWidth, | ||
| 653 | pSpatialCfg->iVideoHeight, | ||
| 654 | pSpatialCfg->fFrameRate, | ||
| 655 | pSpatialCfg->iSpatialBitrate, | ||
| 656 | pSpatialCfg->iMaxSpatialBitrate, | ||
| 657 | pSpatialCfg->sSliceCfg.uiSliceMode, | ||
| 658 | pSpatialCfg->sSliceCfg.sSliceArgument.uiSliceNum, | ||
| 659 | pSpatialCfg->sSliceCfg.sSliceArgument.uiSliceSizeConstraint | ||
| 660 | ); | ||
| 661 | ++ i; | ||
| 662 | } | ||
| 663 | #ifdef OUTPUT_BIT_STREAM | 648 | #ifdef OUTPUT_BIT_STREAM |
| 664 | if (sEncodingParam.sSpatialLayers[sEncodingParam.iSpatialLayerNum - 1].iVideoWidth != | 649 | if (sEncodingParam.sSpatialLayers[sEncodingParam.iSpatialLayerNum - 1].iVideoWidth != |
| 665 | m_pEncContext->pSvcParam->sDependencyLayers[m_pEncContext->pSvcParam->iSpatialLayerNum - 1].iActualWidth) { | 650 | m_pEncContext->pSvcParam->sDependencyLayers[m_pEncContext->pSvcParam->iSpatialLayerNum - 1].iActualWidth) { |