Showing the changes to codec/encoder/plus/src/welsEncoderExt.cpp (1 of 3 files). Show all
Unified · Split
| @@ -598,13 +598,13 @@ void CWelsH264SVCEncoder::UpdateStatistics (const int64_t kiCurrentFrameTs, EVid · 597 unmodified lines | |||
| 598 | SEncoderStatistics* pStatistics = & (m_pEncContext->sEncoderStatistics); | 598 | SEncoderStatistics* pStatistics = & (m_pEncContext->sEncoderStatistics); |
| 599 | 599 | ||
| 600 | int32_t iMaxDid = m_pEncContext->pSvcParam->iSpatialLayerNum - 1; | 600 | int32_t iMaxDid = m_pEncContext->pSvcParam->iSpatialLayerNum - 1; |
| 601 | if ((0 != pStatistics->uWidth && 0 != pStatistics->uHeight) | 601 | if ((0 != pStatistics->uiWidth && 0 != pStatistics->uiHeight) |
| 602 | && (pStatistics->uWidth != (unsigned int) m_pEncContext->pSvcParam->sDependencyLayers[iMaxDid].iActualWidth | 602 | && (pStatistics->uiWidth != (unsigned int) m_pEncContext->pSvcParam->sDependencyLayers[iMaxDid].iActualWidth |
| 603 | || pStatistics->uHeight != (unsigned int) m_pEncContext->pSvcParam->sDependencyLayers[iMaxDid].iActualHeight)) { | 603 | || pStatistics->uiHeight != (unsigned int) m_pEncContext->pSvcParam->sDependencyLayers[iMaxDid].iActualHeight)) { |
| 604 | pStatistics->uiResolutionChangeTimes ++; | 604 | pStatistics->uiResolutionChangeTimes ++; |
| 605 | } | 605 | } |
| 606 | pStatistics->uWidth = m_pEncContext->pSvcParam->sDependencyLayers[iMaxDid].iActualWidth; | 606 | pStatistics->uiWidth = m_pEncContext->pSvcParam->sDependencyLayers[iMaxDid].iActualWidth; |
| 607 | pStatistics->uHeight = m_pEncContext->pSvcParam->sDependencyLayers[iMaxDid].iActualHeight; | 607 | pStatistics->uiHeight = m_pEncContext->pSvcParam->sDependencyLayers[iMaxDid].iActualHeight; |
| 608 | 608 | ||
| 609 | int32_t iProcessedFrameCount = pStatistics->uiInputFrameCount - pStatistics->uiSkippedFrameCount; | 609 | int32_t iProcessedFrameCount = pStatistics->uiInputFrameCount - pStatistics->uiSkippedFrameCount; |
| 610 | const bool kbCurrentFrameSkipped = (videoFrameTypeSkip == eFrameType); | 610 | const bool kbCurrentFrameSkipped = (videoFrameTypeSkip == eFrameType); |
| @@ -626,21 +626,24 @@ void CWelsH264SVCEncoder::UpdateStatistics (const int64_t kiCurrentFrameTs, EVid · 15 unmodified lines | |||
| 626 | pStatistics->uiBitRate = m_pEncContext->pWelsSvcRc->iActualBitRate; //TODO: finish the calculation in RC | 626 | pStatistics->uiBitRate = m_pEncContext->pWelsSvcRc->iActualBitRate; //TODO: finish the calculation in RC |
| 627 | 627 | ||
| 628 | if (videoFrameTypeIDR == eFrameType || videoFrameTypeI == eFrameType) { | 628 | if (videoFrameTypeIDR == eFrameType || videoFrameTypeI == eFrameType) { |
| 629 | pStatistics->uIDRSentNum ++; | 629 | pStatistics->uiIDRSentNum ++; |
| 630 | } | 630 | } |
| 631 | if (m_pEncContext->pLtr->bLTRMarkingFlag) { | 631 | if (m_pEncContext->pLtr->bLTRMarkingFlag) { |
| 632 | pStatistics->uLTRSentNum ++; | 632 | pStatistics->uiLTRSentNum ++; |
| 633 | } | 633 | } |
| 634 | //TODO: update uIDRSentNum in forceIDR | 634 | //TODO: update uiIDRReqNum in forceIDR |
| 635 | 635 | ||
| 636 | if (m_pEncContext->iStatisticsLogInterval > 0) { | 636 | if (m_pEncContext->iStatisticsLogInterval > 0) { |
| 637 | if (WELS_ABS (kiCurrentFrameTs - m_pEncContext->iLastStatisticsLogTs) > m_pEncContext->iStatisticsLogInterval) { | 637 | if (WELS_ABS (kiCurrentFrameTs - m_pEncContext->iLastStatisticsLogTs) > m_pEncContext->iStatisticsLogInterval) { |
| 638 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, | 638 | WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, |
| 639 | "EncoderStatistics: %dx%d, SpeedInMs: %f, AverFrameRate=%f, LastFrameRate=%f, LatestBitRate=%d, uiInputFrameCount=%d, uiSkippedFrameCount=%d, uiResolutionChangeTimes=%d, uIDRReqNum=%d, uIDRSentNum=%d, uLTRSentNum=%d", | 639 | "EncoderStatistics: %dx%d, SpeedInMs: %f, AverFrameRate=%f, LastFrameRate=NA, LatestBitRate=NA, uiInputFrameCount=%d, uiSkippedFrameCount=%d, uiResolutionChangeTimes=%d, uIDRReqNum=%d, uIDRSentNum=%d, uLTRSentNum=NA", |
| 640 | pStatistics->uWidth, pStatistics->uHeight, pStatistics->fAverageFrameSpeedInMs, | 640 | pStatistics->uiWidth, pStatistics->uiHeight, |
| 641 | pStatistics->fAverageFrameRate, pStatistics->fLatestFrameRate, pStatistics->uiBitRate, | 641 | pStatistics->fAverageFrameSpeedInMs, pStatistics->fAverageFrameRate, |
| 642 | pStatistics->uiInputFrameCount, pStatistics->uiSkippedFrameCount, | 642 | pStatistics->uiInputFrameCount, pStatistics->uiSkippedFrameCount, |
| 643 | pStatistics->uiResolutionChangeTimes, pStatistics->uIDRReqNum, pStatistics->uIDRSentNum, pStatistics->uLTRSentNum); | 643 | pStatistics->uiResolutionChangeTimes, pStatistics->uiIDRSentNum, pStatistics->uiLTRSentNum); |
| 644 | //TODO: the following statistics will be calculated and added later | ||
| 645 | //pStatistics->fLatestFrameRate, pStatistics->uiBitRate, | ||
| 646 | //pStatistics->uiIDRReqNum, | ||
| 644 | m_pEncContext->iLastStatisticsLogTs = kiCurrentFrameTs; | 647 | m_pEncContext->iLastStatisticsLogTs = kiCurrentFrameTs; |
| 645 | } | 648 | } |
| 646 | } | 649 | } |
| @@ -1103,8 +1106,8 @@ int CWelsH264SVCEncoder::GetOption (ENCODER_OPTION eOptionId, void* pOption) { · 456 unmodified lines | |||
| 1103 | break; | 1106 | break; |
| 1104 | case ENCODER_OPTION_GET_STATISTICS: { | 1107 | case ENCODER_OPTION_GET_STATISTICS: { |
| 1105 | SEncoderStatistics* pStatistics = (static_cast<SEncoderStatistics*> (pOption)); | 1108 | SEncoderStatistics* pStatistics = (static_cast<SEncoderStatistics*> (pOption)); |
| 1106 | pStatistics->uWidth = m_pEncContext->sEncoderStatistics.uWidth; | 1109 | pStatistics->uiWidth = m_pEncContext->sEncoderStatistics.uiWidth; |
| 1107 | pStatistics->uHeight = m_pEncContext->sEncoderStatistics.uHeight; | 1110 | pStatistics->uiHeight = m_pEncContext->sEncoderStatistics.uiHeight; |
| 1108 | pStatistics->fAverageFrameSpeedInMs = m_pEncContext->sEncoderStatistics.fAverageFrameSpeedInMs; | 1111 | pStatistics->fAverageFrameSpeedInMs = m_pEncContext->sEncoderStatistics.fAverageFrameSpeedInMs; |
| 1109 | 1112 | ||
| 1110 | // rate control related | 1113 | // rate control related |
| @@ -1116,9 +1119,9 @@ int CWelsH264SVCEncoder::GetOption (ENCODER_OPTION eOptionId, void* pOption) { · 5 unmodified lines | |||
| 1116 | pStatistics->uiSkippedFrameCount = m_pEncContext->sEncoderStatistics.uiSkippedFrameCount; | 1119 | pStatistics->uiSkippedFrameCount = m_pEncContext->sEncoderStatistics.uiSkippedFrameCount; |
| 1117 | 1120 | ||
| 1118 | pStatistics->uiResolutionChangeTimes = m_pEncContext->sEncoderStatistics.uiResolutionChangeTimes; | 1121 | pStatistics->uiResolutionChangeTimes = m_pEncContext->sEncoderStatistics.uiResolutionChangeTimes; |
| 1119 | pStatistics->uIDRReqNum = m_pEncContext->sEncoderStatistics.uIDRReqNum; | 1122 | pStatistics->uiIDRReqNum = m_pEncContext->sEncoderStatistics.uiIDRReqNum; |
| 1120 | pStatistics->uIDRSentNum = m_pEncContext->sEncoderStatistics.uIDRSentNum; | 1123 | pStatistics->uiIDRSentNum = m_pEncContext->sEncoderStatistics.uiIDRSentNum; |
| 1121 | pStatistics->uLTRSentNum = m_pEncContext->sEncoderStatistics.uLTRSentNum; | 1124 | pStatistics->uiLTRSentNum = m_pEncContext->sEncoderStatistics.uiLTRSentNum; |
| 1122 | } | 1125 | } |
| 1123 | break; | 1126 | break; |
| 1124 | case ENCODER_OPTION_STATISTICS_LOG_INTERVAL: { | 1127 | case ENCODER_OPTION_STATISTICS_LOG_INTERVAL: { |