Showing the changes to codec/decoder/plus/src/welsDecoderExt.cpp (1 of 5 files). Show all
Unified · Split
| @@ -375,7 +375,8 @@ long CWelsDecoder::GetOption (DECODER_OPTION eOptID, void* pOption) { · 374 unmodified lines | ||
| 375 | 375 | pDecoderStatistics->fAverageFrameSpeedInMs = (float) (m_pDecContext->dDecTime) / |
| 376 | 376 | (m_pDecContext->sDecoderStatistics.uiDecodedFrameCount); |
| 377 | 377 | pDecoderStatistics->fActualAverageFrameSpeedInMs = (float) (m_pDecContext->dDecTime) / |
| 378 | − (m_pDecContext->sDecoderStatistics.uiDecodedFrameCount + m_pDecContext->sDecoderStatistics.uiFreezingIDRNum + m_pDecContext->sDecoderStatistics.uiFreezingNonIDRNum); | |
| 378 | + (m_pDecContext->sDecoderStatistics.uiDecodedFrameCount + m_pDecContext->sDecoderStatistics.uiFreezingIDRNum + | |
| 379 | + m_pDecContext->sDecoderStatistics.uiFreezingNonIDRNum); | |
| 379 | 380 | return cmResultSuccess; |
| 380 | 381 | } |
| 381 | 382 | |
| @@ -439,6 +440,9 @@ DECODING_STATE CWelsDecoder::DecodeFrame2 (const unsigned char* kpSrc, · 57 unmodified lines | ||
| 439 | 440 | |
| 440 | 441 | eNalType = m_pDecContext->sCurNalHead.eNalUnitType; |
| 441 | 442 | |
| 443 | + if (m_pDecContext->iErrorCode & dsOutOfMemory) { | |
| 444 | + ForceResetParaSetStatusAndAUList (m_pDecContext); | |
| 445 | + } | |
| 442 | 446 | //for AVC bitstream (excluding AVC with temporal scalability, including TP), as long as error occur, SHOULD notify upper layer key frame loss. |
| 443 | 447 | if ((IS_PARAM_SETS_NALS (eNalType) || NAL_UNIT_CODED_SLICE_IDR == eNalType) || |
| 444 | 448 | (VIDEO_BITSTREAM_AVC == m_pDecContext->eVideoType)) { |
| @@ -480,11 +484,19 @@ DECODING_STATE CWelsDecoder::DecodeFrame2 (const unsigned char* kpSrc, · 35 unmodified lines | ||
| 480 | 484 | m_pDecContext->sDecoderStatistics.uiDecodedFrameCount++; |
| 481 | 485 | } |
| 482 | 486 | int32_t iMbConcealedNum = m_pDecContext->iMbEcedNum + m_pDecContext->iMbEcedPropNum; |
| 483 | − m_pDecContext->sDecoderStatistics.uiAvgEcRatio = m_pDecContext->iMbNum == 0 ? (m_pDecContext->sDecoderStatistics.uiAvgEcRatio * m_pDecContext->sDecoderStatistics.uiEcFrameNum) :((m_pDecContext->sDecoderStatistics.uiAvgEcRatio * m_pDecContext->sDecoderStatistics.uiEcFrameNum) + ((iMbConcealedNum * 100) / m_pDecContext->iMbNum)); | |
| 484 | − m_pDecContext->sDecoderStatistics.uiAvgEcPropRatio = m_pDecContext->iMbNum == 0 ? (m_pDecContext->sDecoderStatistics.uiAvgEcPropRatio * m_pDecContext->sDecoderStatistics.uiEcFrameNum) :((m_pDecContext->sDecoderStatistics.uiAvgEcPropRatio * m_pDecContext->sDecoderStatistics.uiEcFrameNum) + ((m_pDecContext->iMbEcedPropNum * 100) / m_pDecContext->iMbNum)); | |
| 487 | + m_pDecContext->sDecoderStatistics.uiAvgEcRatio = m_pDecContext->iMbNum == 0 ? | |
| 488 | + (m_pDecContext->sDecoderStatistics.uiAvgEcRatio * m_pDecContext->sDecoderStatistics.uiEcFrameNum) : (( | |
| 489 | + m_pDecContext->sDecoderStatistics.uiAvgEcRatio * m_pDecContext->sDecoderStatistics.uiEcFrameNum) + (( | |
| 490 | + iMbConcealedNum * 100) / m_pDecContext->iMbNum)); | |
| 491 | + m_pDecContext->sDecoderStatistics.uiAvgEcPropRatio = m_pDecContext->iMbNum == 0 ? | |
| 492 | + (m_pDecContext->sDecoderStatistics.uiAvgEcPropRatio * m_pDecContext->sDecoderStatistics.uiEcFrameNum) : (( | |
| 493 | + m_pDecContext->sDecoderStatistics.uiAvgEcPropRatio * m_pDecContext->sDecoderStatistics.uiEcFrameNum) + (( | |
| 494 | + m_pDecContext->iMbEcedPropNum * 100) / m_pDecContext->iMbNum)); | |
| 485 | 495 | m_pDecContext->sDecoderStatistics.uiEcFrameNum += (iMbConcealedNum == 0 ? 0 : 1); |
| 486 | − m_pDecContext->sDecoderStatistics.uiAvgEcRatio = m_pDecContext->sDecoderStatistics.uiEcFrameNum == 0? 0 : m_pDecContext->sDecoderStatistics.uiAvgEcRatio / m_pDecContext->sDecoderStatistics.uiEcFrameNum; | |
| 487 | − m_pDecContext->sDecoderStatistics.uiAvgEcPropRatio = m_pDecContext->sDecoderStatistics.uiEcFrameNum == 0? 0 : m_pDecContext->sDecoderStatistics.uiAvgEcPropRatio / m_pDecContext->sDecoderStatistics.uiEcFrameNum; | |
| 496 | + m_pDecContext->sDecoderStatistics.uiAvgEcRatio = m_pDecContext->sDecoderStatistics.uiEcFrameNum == 0 ? 0 : | |
| 497 | + m_pDecContext->sDecoderStatistics.uiAvgEcRatio / m_pDecContext->sDecoderStatistics.uiEcFrameNum; | |
| 498 | + m_pDecContext->sDecoderStatistics.uiAvgEcPropRatio = m_pDecContext->sDecoderStatistics.uiEcFrameNum == 0 ? 0 : | |
| 499 | + m_pDecContext->sDecoderStatistics.uiAvgEcPropRatio / m_pDecContext->sDecoderStatistics.uiEcFrameNum; | |
| 488 | 500 | } |
| 489 | 501 | iEnd = WelsTime(); |
| 490 | 502 | m_pDecContext->dDecTime += (iEnd - iStart) / 1e3; |