Showing the changes to codec/encoder/plus/src/welsEncoderExt.cpp (1 of 2 files). Show all
Unified · Split
| @@ -61,8 +61,6 @@ namespace WelsSVCEnc { · 60 unmodified lines | |||
| 61 | CWelsH264SVCEncoder::CWelsH264SVCEncoder() | 61 | CWelsH264SVCEncoder::CWelsH264SVCEncoder() |
| 62 | : m_pEncContext (NULL), | 62 | : m_pEncContext (NULL), |
| 63 | m_pWelsTrace (NULL), | 63 | m_pWelsTrace (NULL), |
| 64 | m_pSrcPicList (NULL), | ||
| 65 | m_iSrcListSize (0), | ||
| 66 | m_iMaxPicWidth (0), | 64 | m_iMaxPicWidth (0), |
| 67 | m_iMaxPicHeight (0), | 65 | m_iMaxPicHeight (0), |
| 68 | m_iCspInternal (0), | 66 | m_iCspInternal (0), |
| @@ -376,42 +374,9 @@ int CWelsH264SVCEncoder::InitializeInternal(SWelsSvcCodingParam* pCfg) { · 307 unmodified lines | |||
| 376 | pCfg->iLoopFilterAlphaC0Offset = WELS_CLIP3 (pCfg->iLoopFilterAlphaC0Offset, -6, 6); | 374 | pCfg->iLoopFilterAlphaC0Offset = WELS_CLIP3 (pCfg->iLoopFilterAlphaC0Offset, -6, 6); |
| 377 | pCfg->iLoopFilterBetaOffset = WELS_CLIP3 (pCfg->iLoopFilterBetaOffset, -6, 6); | 375 | pCfg->iLoopFilterBetaOffset = WELS_CLIP3 (pCfg->iLoopFilterBetaOffset, -6, 6); |
| 378 | 376 | ||
| 379 | // m_pSrcPicList = (SSourcePicture **)WelsMalloc( pCfg->iSpatialLayerNum * sizeof(SSourcePicture *), "m_pSrcPicList" ); | ||
| 380 | // prefer use new/delete pair due encoder intialization stage not start yet for CacheLineSize not detection here (16 or 64 not matched) | ||
| 381 | m_pSrcPicList = new SSourcePicture* [iNumOfLayers]; | ||
| 382 | |||
| 383 | if (NULL == m_pSrcPicList) { | ||
| 384 | WelsLog (m_pEncContext, WELS_LOG_ERROR, | ||
| 385 | "CWelsH264SVCEncoder::Initialize(), pOut of memory due m_pSrcPicList memory request.\n"); | ||
| 386 | Uninitialize(); | ||
| 387 | return cmMallocMemeError; | ||
| 388 | } | ||
| 389 | |||
| 390 | // decide property list size between INIT_TYPE_PARAMETER_BASED/INIT_TYPE_CONFIG_BASED | 377 | // decide property list size between INIT_TYPE_PARAMETER_BASED/INIT_TYPE_CONFIG_BASED |
| 391 | m_iMaxPicWidth = pCfg->iPicWidth; | 378 | m_iMaxPicWidth = pCfg->iPicWidth; |
| 392 | m_iMaxPicHeight = pCfg->iPicHeight; | 379 | m_iMaxPicHeight = pCfg->iPicHeight; |
| 393 | m_iSrcListSize = iNumOfLayers; | ||
| 394 | |||
| 395 | for (int32_t i = 0; i < m_iSrcListSize; ++ i) { | ||
| 396 | // m_pSrcPicList[i] = (SSourcePicture *)WelsMalloc( sizeof(SSourcePicture), "m_pSrcPicList[]" ); | ||
| 397 | // prefer use new/delete pair due encoder intialization stage not start yet for CacheLineSize not detection here (16 or 64 not matched) | ||
| 398 | m_pSrcPicList[i] = new SSourcePicture; | ||
| 399 | |||
| 400 | if (NULL == m_pSrcPicList[i]) { | ||
| 401 | WelsLog (m_pEncContext, WELS_LOG_ERROR, | ||
| 402 | "CWelsH264SVCEncoder::Initialize(), pOut of memory due m_pSrcPicList[%d] memory request.\n", i); | ||
| 403 | Uninitialize(); | ||
| 404 | m_iSrcListSize = 0; | ||
| 405 | return cmMallocMemeError; | ||
| 406 | } | ||
| 407 | if(InitPic (m_pSrcPicList[i], iColorspace, m_iMaxPicWidth, m_iMaxPicHeight)) | ||
| 408 | { | ||
| 409 | WelsLog (m_pEncContext, WELS_LOG_ERROR, | ||
| 410 | "CWelsH264SVCEncoder::Initialize(), InitPic Failed iColorspace= 0x%x\n", iColorspace); | ||
| 411 | Uninitialize(); | ||
| 412 | return cmInitParaError; | ||
| 413 | } | ||
| 414 | } | ||
| 415 | 380 | ||
| 416 | if (WelsInitEncoderExt (&m_pEncContext, pCfg)) { | 381 | if (WelsInitEncoderExt (&m_pEncContext, pCfg)) { |
| 417 | WelsLog (m_pEncContext, WELS_LOG_ERROR, "CWelsH264SVCEncoder::Initialize(), WelsInitEncoderExt failed.\n"); | 382 | WelsLog (m_pEncContext, WELS_LOG_ERROR, "CWelsH264SVCEncoder::Initialize(), WelsInitEncoderExt failed.\n"); |
| @@ -441,25 +406,6 @@ int32_t CWelsH264SVCEncoder::Uninitialize() { · 23 unmodified lines | |||
| 441 | #endif//REC_FRAME_COUNT | 406 | #endif//REC_FRAME_COUNT |
| 442 | 407 | ||
| 443 | if (NULL != m_pEncContext) { | 408 | if (NULL != m_pEncContext) { |
| 444 | if (NULL != m_pSrcPicList) { | ||
| 445 | for (int32_t i = 0; i < m_iSrcListSize; i++) { | ||
| 446 | SSourcePicture* pic = m_pSrcPicList[i]; | ||
| 447 | if (NULL != pic) { | ||
| 448 | // WelsFree( pic, "m_pSrcPicList[]" ); | ||
| 449 | // prefer use new/delete pair due encoder intialization stage not start yet for CacheLineSize not detection here (16 or 64 not matched) | ||
| 450 | delete pic; | ||
| 451 | |||
| 452 | pic = NULL; | ||
| 453 | } | ||
| 454 | } | ||
| 455 | // WelsFree( m_pSrcPicList, "m_pSrcPicList" ); | ||
| 456 | // prefer use new/delete pair due encoder intialization stage not start yet for CacheLineSize not detection here (16 or 64 not matched) | ||
| 457 | delete [] m_pSrcPicList; | ||
| 458 | |||
| 459 | m_pSrcPicList = NULL; | ||
| 460 | m_iSrcListSize = 0; | ||
| 461 | } | ||
| 462 | |||
| 463 | WelsUninitEncoderExt (&m_pEncContext); | 409 | WelsUninitEncoderExt (&m_pEncContext); |
| 464 | m_pEncContext = NULL; | 410 | m_pEncContext = NULL; |
| 465 | } | 411 | } |
| @@ -636,28 +582,6 @@ int CWelsH264SVCEncoder::SetOption (ENCODER_OPTION eOptionId, void* pOption) { · 170 unmodified lines | |||
| 636 | m_uiCountFrameNum, m_iCspInternal, iValue); | 582 | m_uiCountFrameNum, m_iCspInternal, iValue); |
| 637 | #endif//REC_FRAME_COUNT | 583 | #endif//REC_FRAME_COUNT |
| 638 | 584 | ||
| 639 | |||
| 640 | int32_t iPicIdx = m_iSrcListSize - 1; | ||
| 641 | while (iPicIdx >= 0) { | ||
| 642 | if (m_pSrcPicList[iPicIdx] == NULL) { | ||
| 643 | -- iPicIdx; | ||
| 644 | if (iPicIdx < 0) return cmInitParaError; | ||
| 645 | continue; | ||
| 646 | } | ||
| 647 | |||
| 648 | if (m_pSrcPicList[iPicIdx]->iColorFormat == iColorspace) { | ||
| 649 | -- iPicIdx; | ||
| 650 | continue; | ||
| 651 | } | ||
| 652 | |||
| 653 | if(InitPic (m_pSrcPicList[iPicIdx], iColorspace, m_iMaxPicWidth, m_iMaxPicHeight)) | ||
| 654 | { | ||
| 655 | WelsLog (m_pEncContext, WELS_LOG_INFO, | ||
| 656 | "CWelsH264SVCEncoder::SetOption():ENCODER_OPTION_DATAFORMAT, iColorspace= 0x%x\n", | ||
| 657 | iColorspace); | ||
| 658 | return cmInitParaError; | ||
| 659 | } | ||
| 660 | } | ||
| 661 | m_iCspInternal = iColorspace; | 585 | m_iCspInternal = iColorspace; |
| 662 | #ifdef REC_FRAME_COUNT | 586 | #ifdef REC_FRAME_COUNT |
| 663 | WelsLog (m_pEncContext, WELS_LOG_INFO, | 587 | WelsLog (m_pEncContext, WELS_LOG_INFO, |
| @@ -750,18 +674,8 @@ int CWelsH264SVCEncoder::SetOption (ENCODER_OPTION eOptionId, void* pOption) { · 86 unmodified lines | |||
| 750 | } | 674 | } |
| 751 | iTargetWidth = sConfig.iPicWidth; | 675 | iTargetWidth = sConfig.iPicWidth; |
| 752 | iTargetHeight = sConfig.iPicHeight; | 676 | iTargetHeight = sConfig.iPicHeight; |
| 753 | if (m_pSrcPicList[0] == NULL) { | ||
| 754 | return cmInitParaError; | ||
| 755 | } | ||
| 756 | if (m_iCspInternal != iInputColorspace || m_iMaxPicWidth != iTargetWidth | 677 | if (m_iCspInternal != iInputColorspace || m_iMaxPicWidth != iTargetWidth |
| 757 | || m_iMaxPicHeight != iTargetHeight) { // for color space due to changed | 678 | || m_iMaxPicHeight != iTargetHeight) { // for color space due to changed |
| 758 | if(InitPic (m_pSrcPicList[0], iInputColorspace, iTargetWidth, iTargetHeight)) | ||
| 759 | { | ||
| 760 | WelsLog (m_pEncContext, WELS_LOG_INFO, | ||
| 761 | "CWelsH264SVCEncoder::SetOption():ENCODER_OPTION_SVC_ENCODE_PARAM_EXT, iInputColorspace= 0x%x\n", | ||
| 762 | iInputColorspace); | ||
| 763 | return cmInitParaError; | ||
| 764 | } | ||
| 765 | m_iMaxPicWidth = iTargetWidth; | 679 | m_iMaxPicWidth = iTargetWidth; |
| 766 | m_iMaxPicHeight = iTargetHeight; | 680 | m_iMaxPicHeight = iTargetHeight; |
| 767 | m_iCspInternal = iInputColorspace; | 681 | m_iCspInternal = iInputColorspace; |