Showing the changes to codec/encoder/core/src/encoder_ext.cpp (1 of 1 file). Show all
Unified · Split
| @@ -2048,7 +2048,8 @@ int32_t RequestMemorySvc (sWelsEncCtx** ppCtx, SExistingParasetList* pExistingPa · 2047 unmodified lines | |||
| 2048 | 2048 | ||
| 2049 | //End of pVaa memory allocation | 2049 | //End of pVaa memory allocation |
| 2050 | 2050 | ||
| 2051 | (*ppCtx)->ppRefPicListExt = (SRefList**)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SRefList*), "ppRefPicListExt"); | 2051 | (*ppCtx)->ppRefPicListExt = (SRefList**)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SRefList*), |
| 2052 | "ppRefPicListExt"); | ||
| 2052 | WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->ppRefPicListExt), FreeMemorySvc (ppCtx)) | 2053 | WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->ppRefPicListExt), FreeMemorySvc (ppCtx)) |
| 2053 | 2054 | ||
| 2054 | (*ppCtx)->ppDqLayerList = (SDqLayer**)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SDqLayer*), "ppDqLayerList"); | 2055 | (*ppCtx)->ppDqLayerList = (SDqLayer**)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SDqLayer*), "ppDqLayerList"); |
| @@ -2290,7 +2291,7 @@ void FreeMemorySvc (sWelsEncCtx** ppCtx) { · 235 unmodified lines | |||
| 2290 | if ((*ppCtx)->pMemAlign != NULL) { | 2291 | if ((*ppCtx)->pMemAlign != NULL) { |
| 2291 | WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_INFO, "FreeMemorySvc(), verify memory usage (%d bytes) after free..", | 2292 | WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_INFO, "FreeMemorySvc(), verify memory usage (%d bytes) after free..", |
| 2292 | (*ppCtx)->pMemAlign->WelsGetMemoryUsage()); | 2293 | (*ppCtx)->pMemAlign->WelsGetMemoryUsage()); |
| 2293 | WELS_DELETE_OP((*ppCtx)->pMemAlign); | 2294 | WELS_DELETE_OP ((*ppCtx)->pMemAlign); |
| 2294 | } | 2295 | } |
| 2295 | 2296 | ||
| 2296 | free (*ppCtx); | 2297 | free (*ppCtx); |
| @@ -2397,6 +2398,87 @@ void OutputCpuFeaturesLog (SLogContext* pLogCtx, uint32_t uiCpuFeatureFlags, uin · 100 unmodified lines | |||
| 2397 | uiCpuCores, | 2398 | uiCpuCores, |
| 2398 | iCacheLineSize); | 2399 | iCacheLineSize); |
| 2399 | } | 2400 | } |
| 2401 | /* | ||
| 2402 | * | ||
| 2403 | * status information output | ||
| 2404 | */ | ||
| 2405 | #if defined(STAT_OUTPUT) | ||
| 2406 | void StatOverallEncodingExt (sWelsEncCtx* pCtx) { | ||
| 2407 | int8_t i = 0; | ||
| 2408 | int8_t j = 0; | ||
| 2409 | for (i = 0; i < pCtx->pSvcParam->iSpatialLayerNum; i++) { | ||
| 2410 | fprintf (stdout, "\nDependency layer : %d\n", i); | ||
| 2411 | fprintf (stdout, "Quality layer : %d\n", j); | ||
| 2412 | { | ||
| 2413 | const int32_t iCount = pCtx->sStatData[i][j].sSliceData.iSliceCount[I_SLICE] + | ||
| 2414 | pCtx->sStatData[i][j].sSliceData.iSliceCount[P_SLICE] + | ||
| 2415 | pCtx->sStatData[i][j].sSliceData.iSliceCount[B_SLICE]; | ||
| 2416 | #if defined(MB_TYPES_CHECK) | ||
| 2417 | if (iCount > 0) { | ||
| 2418 | int32_t iCountNumIMb = pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][Intra4x4] + | ||
| 2419 | pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][Intra16x16] + pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][7]; | ||
| 2420 | int32_t iCountNumPMb = pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Intra4x4] + | ||
| 2421 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Intra16x16] + | ||
| 2422 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][7] + | ||
| 2423 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x16] + | ||
| 2424 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x8] + | ||
| 2425 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x16] + | ||
| 2426 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x8] + | ||
| 2427 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][10] + | ||
| 2428 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][PSkip]; | ||
| 2429 | int32_t count_p_mbL0 = pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x16] + | ||
| 2430 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x8] + | ||
| 2431 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x16] + | ||
| 2432 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x8] + | ||
| 2433 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][10]; | ||
| 2434 | |||
| 2435 | int32_t iMbCount = iCountNumIMb + iCountNumPMb; | ||
| 2436 | if (iMbCount > 0) { | ||
| 2437 | fprintf (stderr, | ||
| 2438 | "SVC: overall Slices MBs: %d Avg\nI4x4: %.3f%% I16x16: %.3f%% IBL: %.3f%%\nP16x16: %.3f%% P16x8: %.3f%% P8x16: %.3f%% P8x8: %.3f%% SUBP8x8: %.3f%% PSKIP: %.3f%%\nILP(All): %.3f%% ILP(PL0): %.3f%% BLSKIP(PL0): %.3f%% RP(PL0): %.3f%%\n", | ||
| 2439 | iMbCount, | ||
| 2440 | (100.0f * (pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][Intra4x4] + | ||
| 2441 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Intra4x4]) / iMbCount), | ||
| 2442 | (100.0f * (pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][Intra16x16] + | ||
| 2443 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Intra16x16]) / iMbCount), | ||
| 2444 | (100.0f * (pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][7] + | ||
| 2445 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][7]) / iMbCount), | ||
| 2446 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x16] / iMbCount), | ||
| 2447 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x8] / iMbCount), | ||
| 2448 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x16] / iMbCount), | ||
| 2449 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x8] / iMbCount), | ||
| 2450 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][10] / iMbCount), | ||
| 2451 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][PSkip] / iMbCount), | ||
| 2452 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][11] / iMbCount), | ||
| 2453 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][11] / count_p_mbL0), | ||
| 2454 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][8] / count_p_mbL0), | ||
| 2455 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][9] / count_p_mbL0) | ||
| 2456 | ); | ||
| 2457 | } | ||
| 2458 | } | ||
| 2459 | #endif //#if defined(MB_TYPES_CHECK) | ||
| 2460 | |||
| 2461 | if (iCount > 0) { | ||
| 2462 | fprintf (stdout, "SVC: overall PSNR Y: %2.3f U: %2.3f V: %2.3f kb/s: %.1f fps: %.3f\n\n", | ||
| 2463 | (pCtx->sStatData[i][j].sQualityStat.rYPsnr[I_SLICE] + pCtx->sStatData[i][j].sQualityStat.rYPsnr[P_SLICE] + | ||
| 2464 | pCtx->sStatData[i][j].sQualityStat.rYPsnr[B_SLICE]) / (float) (iCount), | ||
| 2465 | (pCtx->sStatData[i][j].sQualityStat.rUPsnr[I_SLICE] + pCtx->sStatData[i][j].sQualityStat.rUPsnr[P_SLICE] + | ||
| 2466 | pCtx->sStatData[i][j].sQualityStat.rUPsnr[B_SLICE]) / (float) (iCount), | ||
| 2467 | (pCtx->sStatData[i][j].sQualityStat.rVPsnr[I_SLICE] + pCtx->sStatData[i][j].sQualityStat.rVPsnr[P_SLICE] + | ||
| 2468 | pCtx->sStatData[i][j].sQualityStat.rVPsnr[B_SLICE]) / (float) (iCount), | ||
| 2469 | 1.0f * pCtx->pSvcParam->sDependencyLayers[i].fOutputFrameRate * (pCtx->sStatData[i][j].sSliceData.iSliceSize[I_SLICE] + | ||
| 2470 | pCtx->sStatData[i][j].sSliceData.iSliceSize[P_SLICE] + pCtx->sStatData[i][j].sSliceData.iSliceSize[B_SLICE]) / (float) ( | ||
| 2471 | iCount + pCtx->pWelsSvcRc[i].iSkipFrameNum) / 1000, | ||
| 2472 | 1.0f * pCtx->pSvcParam->sDependencyLayers[i].fOutputFrameRate); | ||
| 2473 | |||
| 2474 | } | ||
| 2475 | |||
| 2476 | } | ||
| 2477 | |||
| 2478 | } | ||
| 2479 | } | ||
| 2480 | #endif | ||
| 2481 | |||
| 2400 | 2482 | ||
| 2401 | int32_t GetMultipleThreadIdc (SLogContext* pLogCtx, SWelsSvcCodingParam* pCodingParam, int16_t& iSliceNum, | 2483 | int32_t GetMultipleThreadIdc (SLogContext* pLogCtx, SWelsSvcCodingParam* pCodingParam, int16_t& iSliceNum, |
| 2402 | int32_t& iCacheLineSize, uint32_t& uiCpuFeatureFlags) { | 2484 | int32_t& iCacheLineSize, uint32_t& uiCpuFeatureFlags) { |
| @@ -2478,7 +2560,7 @@ void WelsUninitEncoderExt (sWelsEncCtx** ppCtx) { · 75 unmodified lines | |||
| 2478 | 2560 | ||
| 2479 | if ((*ppCtx)->pVpp) { | 2561 | if ((*ppCtx)->pVpp) { |
| 2480 | (*ppCtx)->pVpp->FreeSpatialPictures (*ppCtx); | 2562 | (*ppCtx)->pVpp->FreeSpatialPictures (*ppCtx); |
| 2481 | WELS_DELETE_OP((*ppCtx)->pVpp); | 2563 | WELS_DELETE_OP ((*ppCtx)->pVpp); |
| 2482 | } | 2564 | } |
| 2483 | FreeMemorySvc (ppCtx); | 2565 | FreeMemorySvc (ppCtx); |
| 2484 | *ppCtx = NULL; | 2566 | *ppCtx = NULL; |
| @@ -2589,87 +2671,6 @@ int32_t WelsInitEncoderExt (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPar · 104 unmodified lines | |||
| 2589 | 2671 | ||
| 2590 | return 0; | 2672 | return 0; |
| 2591 | } | 2673 | } |
| 2592 | /* | ||
| 2593 | * | ||
| 2594 | * status information output | ||
| 2595 | */ | ||
| 2596 | #if defined(STAT_OUTPUT) | ||
| 2597 | void StatOverallEncodingExt (sWelsEncCtx* pCtx) { | ||
| 2598 | int8_t i = 0; | ||
| 2599 | int8_t j = 0; | ||
| 2600 | for (i = 0; i < pCtx->pSvcParam->iSpatialLayerNum; i++) { | ||
| 2601 | fprintf (stdout, "\nDependency layer : %d\n", i); | ||
| 2602 | fprintf (stdout, "Quality layer : %d\n", j); | ||
| 2603 | { | ||
| 2604 | const int32_t iCount = pCtx->sStatData[i][j].sSliceData.iSliceCount[I_SLICE] + | ||
| 2605 | pCtx->sStatData[i][j].sSliceData.iSliceCount[P_SLICE] + | ||
| 2606 | pCtx->sStatData[i][j].sSliceData.iSliceCount[B_SLICE]; | ||
| 2607 | #if defined(MB_TYPES_CHECK) | ||
| 2608 | if (iCount > 0) { | ||
| 2609 | int32_t iCountNumIMb = pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][Intra4x4] + | ||
| 2610 | pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][Intra16x16] + pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][7]; | ||
| 2611 | int32_t iCountNumPMb = pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Intra4x4] + | ||
| 2612 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Intra16x16] + | ||
| 2613 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][7] + | ||
| 2614 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x16] + | ||
| 2615 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x8] + | ||
| 2616 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x16] + | ||
| 2617 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x8] + | ||
| 2618 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][10] + | ||
| 2619 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][PSkip]; | ||
| 2620 | int32_t count_p_mbL0 = pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x16] + | ||
| 2621 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x8] + | ||
| 2622 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x16] + | ||
| 2623 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x8] + | ||
| 2624 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][10]; | ||
| 2625 | |||
| 2626 | int32_t iMbCount = iCountNumIMb + iCountNumPMb; | ||
| 2627 | if (iMbCount > 0) { | ||
| 2628 | fprintf (stderr, | ||
| 2629 | "SVC: overall Slices MBs: %d Avg\nI4x4: %.3f%% I16x16: %.3f%% IBL: %.3f%%\nP16x16: %.3f%% P16x8: %.3f%% P8x16: %.3f%% P8x8: %.3f%% SUBP8x8: %.3f%% PSKIP: %.3f%%\nILP(All): %.3f%% ILP(PL0): %.3f%% BLSKIP(PL0): %.3f%% RP(PL0): %.3f%%\n", | ||
| 2630 | iMbCount, | ||
| 2631 | (100.0f * (pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][Intra4x4] + | ||
| 2632 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Intra4x4]) / iMbCount), | ||
| 2633 | (100.0f * (pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][Intra16x16] + | ||
| 2634 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Intra16x16]) / iMbCount), | ||
| 2635 | (100.0f * (pCtx->sStatData[i][j].sSliceData.iMbCount[I_SLICE][7] + | ||
| 2636 | pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][7]) / iMbCount), | ||
| 2637 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x16] / iMbCount), | ||
| 2638 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter16x8] / iMbCount), | ||
| 2639 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x16] / iMbCount), | ||
| 2640 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][Inter8x8] / iMbCount), | ||
| 2641 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][10] / iMbCount), | ||
| 2642 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][PSkip] / iMbCount), | ||
| 2643 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][11] / iMbCount), | ||
| 2644 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][11] / count_p_mbL0), | ||
| 2645 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][8] / count_p_mbL0), | ||
| 2646 | (100.0f * pCtx->sStatData[i][j].sSliceData.iMbCount[P_SLICE][9] / count_p_mbL0) | ||
| 2647 | ); | ||
| 2648 | } | ||
| 2649 | } | ||
| 2650 | #endif //#if defined(MB_TYPES_CHECK) | ||
| 2651 | |||
| 2652 | if (iCount > 0) { | ||
| 2653 | fprintf (stdout, "SVC: overall PSNR Y: %2.3f U: %2.3f V: %2.3f kb/s: %.1f fps: %.3f\n\n", | ||
| 2654 | (pCtx->sStatData[i][j].sQualityStat.rYPsnr[I_SLICE] + pCtx->sStatData[i][j].sQualityStat.rYPsnr[P_SLICE] + | ||
| 2655 | pCtx->sStatData[i][j].sQualityStat.rYPsnr[B_SLICE]) / (float) (iCount), | ||
| 2656 | (pCtx->sStatData[i][j].sQualityStat.rUPsnr[I_SLICE] + pCtx->sStatData[i][j].sQualityStat.rUPsnr[P_SLICE] + | ||
| 2657 | pCtx->sStatData[i][j].sQualityStat.rUPsnr[B_SLICE]) / (float) (iCount), | ||
| 2658 | (pCtx->sStatData[i][j].sQualityStat.rVPsnr[I_SLICE] + pCtx->sStatData[i][j].sQualityStat.rVPsnr[P_SLICE] + | ||
| 2659 | pCtx->sStatData[i][j].sQualityStat.rVPsnr[B_SLICE]) / (float) (iCount), | ||
| 2660 | 1.0f * pCtx->pSvcParam->sDependencyLayers[i].fOutputFrameRate * (pCtx->sStatData[i][j].sSliceData.iSliceSize[I_SLICE] + | ||
| 2661 | pCtx->sStatData[i][j].sSliceData.iSliceSize[P_SLICE] + pCtx->sStatData[i][j].sSliceData.iSliceSize[B_SLICE]) / (float) ( | ||
| 2662 | iCount + pCtx->pWelsSvcRc[i].iSkipFrameNum) / 1000, | ||
| 2663 | 1.0f * pCtx->pSvcParam->sDependencyLayers[i].fOutputFrameRate); | ||
| 2664 | |||
| 2665 | } | ||
| 2666 | |||
| 2667 | } | ||
| 2668 | |||
| 2669 | } | ||
| 2670 | } | ||
| 2671 | #endif | ||
| 2672 | |||
| 2673 | /*! | 2674 | /*! |
| 2674 | * \brief get temporal level due to configuration and coding context | 2675 | * \brief get temporal level due to configuration and coding context |
| 2675 | */ | 2676 | */ |
| @@ -3716,7 +3717,7 @@ void ClearFrameBsInfo (sWelsEncCtx* pCtx, SFrameBSInfo* pFbi) { · 1040 unmodified lines | |||
| 3716 | * \pParam pSrcPic Source Picture | 3717 | * \pParam pSrcPic Source Picture |
| 3717 | * \return EFrameType (videoFrameTypeIDR/videoFrameTypeI/videoFrameTypeP) | 3718 | * \return EFrameType (videoFrameTypeIDR/videoFrameTypeI/videoFrameTypeP) |
| 3718 | */ | 3719 | */ |
| 3719 | int32_t WelsEncoderEncodeExt (sWelsEncCtx* pCtx, SFrameBSInfo* pFbi, const SSourcePicture* pSrcPic ) { | 3720 | int32_t WelsEncoderEncodeExt (sWelsEncCtx* pCtx, SFrameBSInfo* pFbi, const SSourcePicture* pSrcPic) { |
| 3720 | if (pCtx == NULL) { | 3721 | if (pCtx == NULL) { |
| 3721 | return ENC_RETURN_MEMALLOCERR; | 3722 | return ENC_RETURN_MEMALLOCERR; |
| 3722 | } | 3723 | } |
| @@ -3756,7 +3757,8 @@ int32_t WelsEncoderEncodeExt (sWelsEncCtx* pCtx, SFrameBSInfo* pFbi, const SSour · 33 unmodified lines | |||
| 3756 | pCtx->iEncoderError = ENC_RETURN_SUCCESS; | 3757 | pCtx->iEncoderError = ENC_RETURN_SUCCESS; |
| 3757 | pCtx->bCurFrameMarkedAsSceneLtr = false; | 3758 | pCtx->bCurFrameMarkedAsSceneLtr = false; |
| 3758 | pFbi->iLayerNum = 0; // for initialization | 3759 | pFbi->iLayerNum = 0; // for initialization |
| 3759 | pFbi->uiTimeStamp = GetTimestampForRc(pSrcPic->uiTimeStamp, pCtx->uiLastTimestamp, pCtx->pSvcParam->sSpatialLayers[pCtx->pSvcParam->iSpatialLayerNum-1].fFrameRate); | 3760 | pFbi->uiTimeStamp = GetTimestampForRc (pSrcPic->uiTimeStamp, pCtx->uiLastTimestamp, |
| 3761 | pCtx->pSvcParam->sSpatialLayers[pCtx->pSvcParam->iSpatialLayerNum - 1].fFrameRate); | ||
| 3760 | for (int32_t iNalIdx = 0; iNalIdx < MAX_LAYER_NUM_OF_FRAME; iNalIdx++) { | 3762 | for (int32_t iNalIdx = 0; iNalIdx < MAX_LAYER_NUM_OF_FRAME; iNalIdx++) { |
| 3761 | pFbi->sLayerInfo[iNalIdx].eFrameType = videoFrameTypeSkip; | 3763 | pFbi->sLayerInfo[iNalIdx].eFrameType = videoFrameTypeSkip; |
| 3762 | } | 3764 | } |
| @@ -4784,8 +4786,8 @@ int32_t WelsEncoderApplyLTR (SLogContext* pLogCtx, sWelsEncCtx** ppCtx, SLTRConf · 1021 unmodified lines | |||
| 4784 | return iRet; | 4786 | return iRet; |
| 4785 | } | 4787 | } |
| 4786 | int32_t FrameBsRealloc (sWelsEncCtx* pCtx, | 4788 | int32_t FrameBsRealloc (sWelsEncCtx* pCtx, |
| 4787 | SFrameBSInfo* pFrameBsInfo, | 4789 | SFrameBSInfo* pFrameBsInfo, |
| 4788 | SLayerBSInfo* pLayerBsInfo) { | 4790 | SLayerBSInfo* pLayerBsInfo) { |
| 4789 | CMemoryAlign* pMA = pCtx->pMemAlign; | 4791 | CMemoryAlign* pMA = pCtx->pMemAlign; |
| 4790 | SDqLayer* pCurLayer = pCtx->pCurDqLayer; | 4792 | SDqLayer* pCurLayer = pCtx->pCurDqLayer; |
| 4791 | 4793 | ||
| @@ -4847,7 +4849,7 @@ int32_t SliceBufferRealloc (sWelsEncCtx* pCtx) { · 55 unmodified lines | |||
| 4847 | SSlice* pSliceIdx = &pSlice[uiSliceIdx]; | 4849 | SSlice* pSliceIdx = &pSlice[uiSliceIdx]; |
| 4848 | const int32_t kiCurDid = pCtx->uiDependencyId; | 4850 | const int32_t kiCurDid = pCtx->uiDependencyId; |
| 4849 | const int32_t kiBitsPerMb = WELS_DIV_ROUND (pCtx->pWelsSvcRc[kiCurDid].iTargetBits * INT_MULTIPLY, | 4851 | const int32_t kiBitsPerMb = WELS_DIV_ROUND (pCtx->pWelsSvcRc[kiCurDid].iTargetBits * INT_MULTIPLY, |
| 4850 | pCtx->pWelsSvcRc[kiCurDid].iNumberMbFrame); | 4852 | pCtx->pWelsSvcRc[kiCurDid].iNumberMbFrame); |
| 4851 | while (uiSliceIdx < iMaxSliceNum) { | 4853 | while (uiSliceIdx < iMaxSliceNum) { |
| 4852 | SSliceHeaderExt* pSHExt = &pSliceIdx->sSliceHeaderExt; | 4854 | SSliceHeaderExt* pSHExt = &pSliceIdx->sSliceHeaderExt; |
| 4853 | pSliceIdx->uiSliceIdx = uiSliceIdx; | 4855 | pSliceIdx->uiSliceIdx = uiSliceIdx; |
| @@ -4877,8 +4879,8 @@ int32_t SliceBufferRealloc (sWelsEncCtx* pCtx) { · 23 unmodified lines | |||
| 4877 | pSliceIdx->sSlicingOverRc.iTotalQpSlice = 0; | 4879 | pSliceIdx->sSlicingOverRc.iTotalQpSlice = 0; |
| 4878 | pSliceIdx->sSlicingOverRc.iTotalMbSlice = 0; | 4880 | pSliceIdx->sSlicingOverRc.iTotalMbSlice = 0; |
| 4879 | pSliceIdx->sSlicingOverRc.iTargetBitsSlice = WELS_DIV_ROUND (kiBitsPerMb * | 4881 | pSliceIdx->sSlicingOverRc.iTargetBitsSlice = WELS_DIV_ROUND (kiBitsPerMb * |
| 4880 | pSlice[uiSliceIdx].iCountMbNumInSlice, | 4882 | pSlice[uiSliceIdx].iCountMbNumInSlice, |
| 4881 | INT_MULTIPLY); | 4883 | INT_MULTIPLY); |
| 4882 | pSliceIdx->sSlicingOverRc.iFrameBitsSlice = 0; | 4884 | pSliceIdx->sSlicingOverRc.iFrameBitsSlice = 0; |
| 4883 | pSliceIdx->sSlicingOverRc.iGomBitsSlice = 0; | 4885 | pSliceIdx->sSlicingOverRc.iGomBitsSlice = 0; |
| 4884 | 4886 | ||
| @@ -4901,7 +4903,7 @@ int32_t DynSliceRealloc (sWelsEncCtx* pCtx, · 16 unmodified lines | |||
| 4901 | int32_t iRet = 0; | 4903 | int32_t iRet = 0; |
| 4902 | 4904 | ||
| 4903 | iRet = FrameBsRealloc (pCtx, pFrameBsInfo, pLayerBsInfo); | 4905 | iRet = FrameBsRealloc (pCtx, pFrameBsInfo, pLayerBsInfo); |
| 4904 | if(ENC_RETURN_SUCCESS != iRet) | 4906 | if (ENC_RETURN_SUCCESS != iRet) |
| 4905 | return iRet; | 4907 | return iRet; |
| 4906 | 4908 | ||
| 4907 | iRet = SliceBufferRealloc (pCtx); | 4909 | iRet = SliceBufferRealloc (pCtx); |