History

add total length in encoder output and complete most of the statistis calculation

Sijia Chen committed 12 years ago

Commit b56b8721 parent aed7b236 files · +69 −13Browse files

Showing the changes to codec/encoder/plus/src/welsEncoderExt.cpp (1 of 6 files). Show all

Unified · Split

codec/encoder/plus/src/welsEncoderExt.cpp+24−9
@@ -431,7 +431,7 @@ int CWelsH264SVCEncoder ::EncodeFrameInternal (const SSourcePicture* pSrcPic, S · 430 unmodified lines
431 return cmUnkonwReason;431 return cmUnkonwReason;
432 }432 }
433 433
434 UpdateStatistics (pSrcPic->uiTimeStamp, pBsInfo->eFrameType, kiCurrentFrameMs);434 UpdateStatistics (pSrcPic->uiTimeStamp, pBsInfo->eFrameType, pBsInfo->iFrameSizeInBytes, kiCurrentFrameMs);
435 435
436 ///////////////////for test436 ///////////////////for test
437#ifdef OUTPUT_BIT_STREAM437#ifdef OUTPUT_BIT_STREAM
@@ -504,6 +504,8 @@ int CWelsH264SVCEncoder::ForceIntraFrame (bool bIDR) { · 66 unmodified lines
504 504
505 ForceCodingIDR (m_pEncContext);505 ForceCodingIDR (m_pEncContext);
506 506
507 m_pEncContext->sEncoderStatistics.uiIDRReqNum++;
508
507 return 0;509 return 0;
508}510}
509void CWelsH264SVCEncoder::CheckProfileSetting (int32_t iLayer, EProfileIdc uiProfileIdc) {511void CWelsH264SVCEncoder::CheckProfileSetting (int32_t iLayer, EProfileIdc uiProfileIdc) {
@@ -594,7 +596,7 @@ void CWelsH264SVCEncoder::TraceParamInfo (SEncParamExt* pParam) { · 84 unmodified lines
594}596}
595 597
596void CWelsH264SVCEncoder::UpdateStatistics (const int64_t kiCurrentFrameTs, EVideoFrameType eFrameType,598void CWelsH264SVCEncoder::UpdateStatistics (const int64_t kiCurrentFrameTs, EVideoFrameType eFrameType,
597 const int64_t kiCurrentFrameMs) {599 const int32_t kiCurrentFrameSize, const int64_t kiCurrentFrameMs) {
598 SEncoderStatistics* pStatistics = & (m_pEncContext->sEncoderStatistics);600 SEncoderStatistics* pStatistics = & (m_pEncContext->sEncoderStatistics);
599 601
600 int32_t iMaxDid = m_pEncContext->pSvcParam->iSpatialLayerNum - 1;602 int32_t iMaxDid = m_pEncContext->pSvcParam->iSpatialLayerNum - 1;
@@ -633,20 +635,33 @@ void CWelsH264SVCEncoder::UpdateStatistics (const int64_t kiCurrentFrameTs, EVid · 32 unmodified lines
633 if (m_pEncContext->pLtr->bLTRMarkingFlag) {635 if (m_pEncContext->pLtr->bLTRMarkingFlag) {
634 pStatistics->uiLTRSentNum ++;636 pStatistics->uiLTRSentNum ++;
635 }637 }
636 //TODO: update uiIDRReqNum in forceIDR638
639 m_pEncContext->iTotalEncodedBits += kiCurrentFrameSize;
637 640
638 if (m_pEncContext->iStatisticsLogInterval > 0) {641 if (m_pEncContext->iStatisticsLogInterval > 0) {
639 if (WELS_ABS (kiCurrentFrameTs - m_pEncContext->iLastStatisticsLogTs) > m_pEncContext->iStatisticsLogInterval) {642 int64_t iTimeDiff = kiCurrentFrameTs - m_pEncContext->iLastStatisticsLogTs;
643 if (iTimeDiff > m_pEncContext->iStatisticsLogInterval) {
644 pStatistics->fLatestFrameRate = (pStatistics->uiInputFrameCount - m_pEncContext->iLastStatisticsFrameCount) * 1000 /
645 iTimeDiff;
646 pStatistics->uiBitRate = static_cast<unsigned int> ((m_pEncContext->iTotalEncodedBits -
647 m_pEncContext->iLastStatisticsBits) * 1000 / iTimeDiff);
648
649 // update variables
650 m_pEncContext->iLastStatisticsLogTs = kiCurrentFrameTs;
651 m_pEncContext->iLastStatisticsBits = m_pEncContext->iTotalEncodedBits;
652 m_pEncContext->iLastStatisticsFrameCount = pStatistics->uiInputFrameCount;
653
640 WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO,654 WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO,
641 "EncoderStatistics: %dx%d, SpeedInMs: %f, AverFrameRate=%f, LastFrameRate=NA, LatestBitRate=NA, uiInputFrameCount=%d, uiSkippedFrameCount=%d, uiResolutionChangeTimes=%d, uIDRReqNum=%d, uIDRSentNum=%d, uLTRSentNum=NA",655 "EncoderStatistics: %dx%d, SpeedInMs: %f, fAverageFrameRate=%f, \
656 LastFrameRate=%f, LatestBitRate=%d, uiInputFrameCount=%d, uiSkippedFrameCount=%d, \
657 uiResolutionChangeTimes=%d, uIDRReqNum=%d, uIDRSentNum=%d, uLTRSentNum=NA",
642 pStatistics->uiWidth, pStatistics->uiHeight,658 pStatistics->uiWidth, pStatistics->uiHeight,
643 pStatistics->fAverageFrameSpeedInMs, pStatistics->fAverageFrameRate,659 pStatistics->fAverageFrameSpeedInMs, pStatistics->fAverageFrameRate,
660 pStatistics->fLatestFrameRate, pStatistics->uiBitRate,
644 pStatistics->uiInputFrameCount, pStatistics->uiSkippedFrameCount,661 pStatistics->uiInputFrameCount, pStatistics->uiSkippedFrameCount,
645 pStatistics->uiResolutionChangeTimes, pStatistics->uiIDRSentNum, pStatistics->uiLTRSentNum);662 pStatistics->uiResolutionChangeTimes, pStatistics->uiIDRReqNum, pStatistics->uiIDRSentNum);
646 //TODO: the following statistics will be calculated and added later663 //TODO: the following statistics will be calculated and added later
647 //pStatistics->fLatestFrameRate, pStatistics->uiBitRate,664 //pStatistics->uiLTRSentNum
648 //pStatistics->uiIDRReqNum,
649 m_pEncContext->iLastStatisticsLogTs = kiCurrentFrameTs;
650 }665 }
651 }666 }
652 667

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t