WELSVP_NAMESPACE_BEGIN /////////////////////////////////////////////////////////////////////////////////////////////////////////////// CVAACalculation::CVAACalculation (int32_t iCpuFlag) { m_iCPUFlag = iCpuFlag; m_eMethod = METHOD_VAA_STATISTICS; WelsMemset (&m_sCalcParam, 0, sizeof (m_sCalcParam)); WelsMemset (&m_sVaaFuncs, 0, sizeof (m_sVaaFuncs)); InitVaaFuncs (m_sVaaFuncs, m_iCPUFlag); }
CComplexityAnalysisScreen::CComplexityAnalysisScreen (int32_t iCpuFlag) { m_eMethod = METHOD_COMPLEXITY_ANALYSIS_SCREEN; WelsMemset (&m_ComplexityAnalysisParam, 0, sizeof (m_ComplexityAnalysisParam)); m_pSadFunc = WelsSampleSad16x16_c; m_pIntraFunc[0] = WelsI16x16LumaPredV_c; m_pIntraFunc[1] = WelsI16x16LumaPredH_c; #ifdef X86_ASM if (iCpuFlag & WELS_CPU_SSE2) { m_pSadFunc = WelsSampleSad16x16_sse2; m_pIntraFunc[0] = WelsI16x16LumaPredV_sse2; m_pIntraFunc[1] = WelsI16x16LumaPredH_sse2; } #endif #if defined (HAVE_NEON) if (iCpuFlag & WELS_CPU_NEON) { m_pSadFunc = WelsSampleSad16x16_neon; m_pIntraFunc[0] = WelsI16x16LumaPredV_neon; m_pIntraFunc[1] = WelsI16x16LumaPredH_neon; } #endif #if defined (HAVE_NEON_AARCH64) if (iCpuFlag & WELS_CPU_NEON) { m_pSadFunc = WelsSampleSad16x16_AArch64_neon; m_pIntraFunc[0] = WelsI16x16LumaPredV_AArch64_neon; m_pIntraFunc[1] = WelsI16x16LumaPredH_AArch64_neon; } #endif }
WELSVP_NAMESPACE_BEGIN /////////////////////////////////////////////////////////////////////////////////////////////////////////////// CComplexityAnalysis::CComplexityAnalysis (int32_t iCpuFlag) { m_eMethod = METHOD_COMPLEXITY_ANALYSIS; m_pfGomSad = NULL; WelsMemset (&m_sComplexityAnalysisParam, 0, sizeof (m_sComplexityAnalysisParam)); }
WELSVP_NAMESPACE_BEGIN #define CALC_BI_STRIDE(iWidth, iBitcount) ((((iWidth) * (iBitcount) + 31) & ~31) >> 3) /////////////////////////////////////////////////////////////////////////////////////////////////////////////// CDenoiser::CDenoiser (int32_t iCpuFlag) { m_CPUFlag = iCpuFlag; m_eMethod = METHOD_DENOISE; WelsMemset (&m_pfDenoise, 0, sizeof (m_pfDenoise)); m_uiSpaceRadius = DENOISE_GRAY_RADIUS; m_fSigmaGrey = DENOISE_GRAY_SIGMA; m_uiType = DENOISE_ALL_COMPONENT; InitDenoiseFunc (m_pfDenoise, m_CPUFlag); }
WELSVP_NAMESPACE_BEGIN #define AVERAGE_TIME_MOTION (0.3) //0.3046875 // 1/4 + 1/16 - 1/128 ~ 0.3 #define AVERAGE_TIME_TEXTURE_QUALITYMODE (1.0) //0.5 // 1/2 #define AVERAGE_TIME_TEXTURE_BITRATEMODE (0.875) //0.5 // 1/2 #define MODEL_ALPHA (0.9910) //1.5 //1.1102 #define MODEL_TIME (5.8185) //9.0 //5.9842 /////////////////////////////////////////////////////////////////////////////////////////////////////////////// CAdaptiveQuantization::CAdaptiveQuantization (int32_t iCpuFlag) { m_CPUFlag = iCpuFlag; m_eMethod = METHOD_ADAPTIVE_QUANT; m_pfVar = NULL; WelsMemset (&m_sAdaptiveQuantParam, 0, sizeof (m_sAdaptiveQuantParam)); WelsInitVarFunc (m_pfVar, m_CPUFlag); }
WELSVP_NAMESPACE_BEGIN #define LOG2_BGD_OU_SIZE (4) #define LOG2_BGD_OU_SIZE_UV (LOG2_BGD_OU_SIZE-1) #define BGD_OU_SIZE (1<<LOG2_BGD_OU_SIZE) #define BGD_OU_SIZE_UV (BGD_OU_SIZE>>1) #define BGD_THD_SAD (2*BGD_OU_SIZE*BGD_OU_SIZE) #define BGD_THD_ASD_UV (4*BGD_OU_SIZE_UV) #define LOG2_MB_SIZE (4) #define OU_SIZE_IN_MB (BGD_OU_SIZE >> 4) #define Q_FACTOR (8) #define BGD_DELTA_QP_THD (3) #define OU_LEFT (0x01) #define OU_RIGHT (0x02) #define OU_TOP (0x04) #define OU_BOTTOM (0x08) CBackgroundDetection::CBackgroundDetection (int32_t iCpuFlag) { m_eMethod = METHOD_BACKGROUND_DETECTION; WelsMemset (&m_BgdParam, 0, sizeof (m_BgdParam)); m_iLargestFrameSize = 0; }
WELSVP_NAMESPACE_BEGIN ///////////////////////////////////////////////////////////////////////////////// void* WelsMalloc (const uint32_t kuiSize, char* pTag) { const int32_t kiSizeVoidPointer = sizeof (void**); const int32_t kiSizeInt32 = sizeof (int32_t); const int32_t kiAlignedBytes = ALIGNBYTES - 1; uint8_t* pBuf = (uint8_t*) ::malloc (kuiSize + kiAlignedBytes + kiSizeVoidPointer + kiSizeInt32); uint8_t* pAlignedBuf = NULL; if (NULL == pBuf) return NULL; // to fill zero values WelsMemset (pBuf, 0, kuiSize + kiAlignedBytes + kiSizeVoidPointer + kiSizeInt32); pAlignedBuf = pBuf + kiAlignedBytes + kiSizeVoidPointer + kiSizeInt32; pAlignedBuf -= WelsCastFromPointer (pAlignedBuf) & kiAlignedBytes; * ((void**) (pAlignedBuf - kiSizeVoidPointer)) = pBuf; * ((int32_t*) (pAlignedBuf - (kiSizeVoidPointer + kiSizeInt32))) = kuiSize; return (pAlignedBuf); }