History

fix timestamp = 0 issue when rc mode is BITRATE mode

sijchen committed 10 years ago

Commit 9816e331 parent 597b4ee6 files · +26 −22Browse 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+5−10
@@ -402,14 +402,7 @@ int CWelsH264SVCEncoder::EncodeFrame (const SSourcePicture* kpSrcPic, SFrameBSIn · 401 unmodified lines
402 402
403int CWelsH264SVCEncoder ::EncodeFrameInternal (const SSourcePicture* pSrcPic, SFrameBSInfo* pBsInfo) {403int 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 test420 ///////////////////for test
428#ifdef OUTPUT_BIT_STREAM421#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
576void CWelsH264SVCEncoder::UpdateStatistics (const int64_t kiCurrentFrameTs, SFrameBSInfo* pBsInfo,569void 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++) {

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