Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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

}
Ejemplo n.º 3
0
WELSVP_NAMESPACE_BEGIN

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

CComplexityAnalysis::CComplexityAnalysis (int32_t iCpuFlag) {
    m_eMethod   = METHOD_COMPLEXITY_ANALYSIS;
    m_pfGomSad   = NULL;
    WelsMemset (&m_sComplexityAnalysisParam, 0, sizeof (m_sComplexityAnalysisParam));
}
Ejemplo n.º 4
0
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);
}
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
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);
}