History

Squashed merge from writenal_refactor2

sijchen committed 12 years ago

Commit e45e8591 parent a921bc616 files · +431 −263Browse files

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

Unified · Split

codec/encoder/plus/src/welsEncoderExt.cpp+18−8
@@ -521,22 +521,32 @@ int CWelsH264SVCEncoder::EncodeFrame (const SSourcePicture* kpSrcPic, SFrameBSIn · 520 unmodified lines
521521
522522
523523 int CWelsH264SVCEncoder::EncodeFrame2 (const SSourcePicture** pSrcPicList, int nSrcPicNum, SFrameBSInfo* pBsInfo) {
524− if (! (pSrcPicList && m_pEncContext && m_bInitialFlag)) {
524+ if (!(pSrcPicList && m_pEncContext && m_bInitialFlag) || (nSrcPicNum<=0) ){
525525 return videoFrameTypeInvalid;
526526 }
527527
528528 int32_t iFrameTypeReturned = 0;
529529 int32_t iFrameType = videoFrameTypeInvalid;
530+ XMMREG_PROTECT_STORE(CWelsH264SVCEncoder);
531+ const int32_t kiEncoderReturn = WelsEncoderEncodeExt (m_pEncContext, pBsInfo, pSrcPicList, nSrcPicNum);
532+ XMMREG_PROTECT_LOAD(CWelsH264SVCEncoder);
530533
531− if (nSrcPicNum > 0) {
532− XMMREG_PROTECT_STORE(CWelsH264SVCEncoder);
533− iFrameTypeReturned = WelsEncoderEncodeExt (m_pEncContext, pBsInfo, pSrcPicList, nSrcPicNum);
534− XMMREG_PROTECT_LOAD(CWelsH264SVCEncoder);
535− } else {
536− assert (0);
534+ switch (kiEncoderReturn) {
535+ case ENC_RETURN_MEMALLOCERR:
536+ WelsUninitEncoderExt (&m_pEncContext);
537+ return videoFrameTypeInvalid;
538+ case ENC_RETURN_SUCCESS:
539+ case ENC_RETURN_CORRECTED:
540+ break;//continue processing
541+ case ENC_RETURN_UNSUPPORTED_PARA:
542+ case ENC_RETURN_UNEXPECTED:
543+ return videoFrameTypeInvalid;
544+ default:
545+ WelsLog (m_pEncContext, WELS_LOG_ERROR, "unexpected return(%d) from WelsEncoderEncodeExt()!\n", kiEncoderReturn);
537546 return videoFrameTypeInvalid;
538547 }
539548
549+ iFrameTypeReturned = pBsInfo->eOutputFrameType;
540550 switch (iFrameTypeReturned) {
541551 case WELS_FRAME_TYPE_P:
542552 iFrameType = videoFrameTypeP;
@@ -832,7 +842,7 @@ int CWelsH264SVCEncoder::SetOption (ENCODER_OPTION eOptionId, void* pOption) { · 289 unmodified lines
832842 return cmInitParaError;
833843 }
834844 //adjust to valid range
835− m_pEncContext->pSvcParam->fMaxFrameRate = WELS_CLIP3 (iValue, MIN_FRAME_RATE, MAX_FRAME_RATE);
845+ m_pEncContext->pSvcParam->fMaxFrameRate = WELS_CLIP3 (iValue, MIN_FRAME_RATE, MAX_FRAME_RATE);
836846 WelsEncoderApplyFrameRate (m_pEncContext->pSvcParam);
837847 }
838848 break;

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