History

fix timestamp = 0 issue when rc mode is BITRATE mode.

Karina committed 10 years ago

Commit 597b4ee1 parent 27541294 files · +23 −16Browse files

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

Unified · Split

codec/encoder/plus/src/welsEncoderExt.cpp+10−3
@@ -402,7 +402,14 @@ int CWelsH264SVCEncoder::EncodeFrame (const SSourcePicture* kpSrcPic, SFrameBSIn · 401 unmodified lines
402402
403403 int CWelsH264SVCEncoder ::EncodeFrameInternal (const SSourcePicture* pSrcPic, SFrameBSInfo* pBsInfo) {
404404 const int64_t kiBeforeFrameUs = WelsTime();
405− const int32_t kiEncoderReturn = WelsEncoderEncodeExt (m_pEncContext, pBsInfo, pSrcPic);
405+ int64_t uiTimeStamp = pSrcPic->uiTimeStamp;
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);
406413 const int64_t kiCurrentFrameMs = (WelsTime() - kiBeforeFrameUs) / 1000;
407414
408415 if ((kiEncoderReturn == ENC_RETURN_MEMALLOCERR) || (kiEncoderReturn == ENC_RETURN_MEMOVERFLOWFOUND)
@@ -415,7 +422,7 @@ int CWelsH264SVCEncoder ::EncodeFrameInternal (const SSourcePicture* pSrcPic, S · 6 unmodified lines
415422 return cmUnknownReason;
416423 }
417424
418− UpdateStatistics (pSrcPic->uiTimeStamp, pBsInfo, kiCurrentFrameMs);
425+ UpdateStatistics (uiTimeStamp, pBsInfo, kiCurrentFrameMs);
419426
420427 ///////////////////for test
421428 #ifdef OUTPUT_BIT_STREAM
@@ -582,7 +589,7 @@ void CWelsH264SVCEncoder::UpdateStatistics (const int64_t kiCurrentFrameTs, SFra · 160 unmodified lines
582589 if ((pLayerInfo->uiLayerType == VIDEO_CODING_LAYER) && (pLayerInfo->uiSpatialId == iDid)) {
583590 eFrameType = pLayerInfo->eFrameType;
584591 for (int32_t iNalIdx = 0; iNalIdx < pLayerInfo->iNalCount; iNalIdx++) {
585− kiCurrentFrameSize += pLayerInfo->pNalLengthInByte[iNalIdx];
592+ kiCurrentFrameSize += pLayerInfo->pNalLengthInByte[iNalIdx];
586593 }
587594 }
588595 }

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