Showing the changes to codec/encoder/plus/src/welsEncoderExt.cpp (1 of 6 files). Show all
Unified · Split
| @@ -402,14 +402,7 @@ int CWelsH264SVCEncoder::EncodeFrame (const SSourcePicture* kpSrcPic, SFrameBSIn · 401 unmodified lines | |||
| 402 | 402 | ||
| 403 | int CWelsH264SVCEncoder ::EncodeFrameInternal (const SSourcePicture* pSrcPic, SFrameBSInfo* pBsInfo) { | 403 | int CWelsH264SVCEncoder ::EncodeFrameInternal (const SSourcePicture* pSrcPic, SFrameBSInfo* pBsInfo) { |
| 404 | const int64_t kiBeforeFrameUs = WelsTime(); | 404 | const int64_t kiBeforeFrameUs = WelsTime(); |
| 405 | int64_t uiTimeStamp = pSrcPic->uiTimeStamp; | 405 | const int32_t kiEncoderReturn = WelsEncoderEncodeExt (m_pEncContext, pBsInfo, pSrcPic); |
| 406 | if ((m_pEncContext->uiLastTimestamp == uiTimeStamp) || ((uiTimeStamp == 0) && (m_pEncContext->uiLastTimestamp != -1))) { | ||
| 407 | uiTimeStamp = m_pEncContext->uiLastTimestamp + (int32_t) (1000.0 / | ||
| 408 | m_pEncContext->pSvcParam->sSpatialLayers->fFrameRate); | ||
| 409 | } | ||
| 410 | m_pEncContext->uiLastTimestamp = uiTimeStamp; | ||
| 411 | |||
| 412 | const int32_t kiEncoderReturn = WelsEncoderEncodeExt (m_pEncContext, pBsInfo, pSrcPic, uiTimeStamp); | ||
| 413 | const int64_t kiCurrentFrameMs = (WelsTime() - kiBeforeFrameUs) / 1000; | 406 | const int64_t kiCurrentFrameMs = (WelsTime() - kiBeforeFrameUs) / 1000; |
| 414 | 407 | ||
| 415 | if ((kiEncoderReturn == ENC_RETURN_MEMALLOCERR) || (kiEncoderReturn == ENC_RETURN_MEMOVERFLOWFOUND) | 408 | if ((kiEncoderReturn == ENC_RETURN_MEMALLOCERR) || (kiEncoderReturn == ENC_RETURN_MEMOVERFLOWFOUND) |
| @@ -422,7 +415,7 @@ int CWelsH264SVCEncoder ::EncodeFrameInternal (const SSourcePicture* pSrcPic, S · 6 unmodified lines | |||
| 422 | return cmUnknownReason; | 415 | return cmUnknownReason; |
| 423 | } | 416 | } |
| 424 | 417 | ||
| 425 | UpdateStatistics (uiTimeStamp, pBsInfo, kiCurrentFrameMs); | 418 | UpdateStatistics (pBsInfo, kiCurrentFrameMs); |
| 426 | 419 | ||
| 427 | ///////////////////for test | 420 | ///////////////////for test |
| 428 | #ifdef OUTPUT_BIT_STREAM | 421 | #ifdef OUTPUT_BIT_STREAM |
| @@ -573,9 +566,11 @@ void CWelsH264SVCEncoder::LogStatistics (const int64_t kiCurrentFrameTs, int32_t · 144 unmodified lines | |||
| 573 | } | 566 | } |
| 574 | } | 567 | } |
| 575 | 568 | ||
| 576 | void CWelsH264SVCEncoder::UpdateStatistics (const int64_t kiCurrentFrameTs, SFrameBSInfo* pBsInfo, | 569 | void CWelsH264SVCEncoder::UpdateStatistics (SFrameBSInfo* pBsInfo, |
| 577 | const int64_t kiCurrentFrameMs) { | 570 | const int64_t kiCurrentFrameMs) { |
| 578 | 571 | ||
| 572 | const int64_t kiCurrentFrameTs = m_pEncContext->uiLastTimestamp = pBsInfo->uiTimeStamp; | ||
| 573 | |||
| 579 | int32_t iMaxDid = m_pEncContext->pSvcParam->iSpatialLayerNum - 1; | 574 | int32_t iMaxDid = m_pEncContext->pSvcParam->iSpatialLayerNum - 1; |
| 580 | SLayerBSInfo* pLayerInfo = &pBsInfo->sLayerInfo[0]; | 575 | SLayerBSInfo* pLayerInfo = &pBsInfo->sLayerInfo[0]; |
| 581 | for (int32_t iDid = 0; iDid <= iMaxDid; iDid++) { | 576 | for (int32_t iDid = 0; iDid <= iMaxDid; iDid++) { |