76 lines · 2.3 KB · C++
RawDownload
#include <gtest/gtest.h>#include <math.h>#include <string.h>#include "cpu.h"#include "cpu_core.h"#include "util.h"#include "macros.h"#include "IWelsVP.h"#include "AdaptiveQuantization.h"  using namespace nsWelsVP; static void FillWithRandomData (uint8_t* p, int32_t Len) {  for (int32_t i = 0; i < Len; i++) {    p[i] = rand() % 256;  }} void SampleVariance16x16_ref (uint8_t* pRefY, int32_t iRefStride, uint8_t* pSrcY, int32_t iSrcStride,                              SMotionTextureUnit* pMotionTexture) {  uint32_t uiCurSquare = 0,  uiSquare = 0;  uint16_t uiCurSum = 0,  uiSum = 0;   for (int32_t y = 0; y < MB_WIDTH_LUMA; y++) {    for (int32_t x = 0; x < MB_WIDTH_LUMA; x++) {      uint32_t uiDiff = WELS_ABS (pRefY[x] - pSrcY[x]);      uiSum += uiDiff;      uiSquare += uiDiff * uiDiff;       uiCurSum += pSrcY[x];      uiCurSquare += pSrcY[x] * pSrcY[x];    }    pRefY += iRefStride;    pSrcY += iSrcStride;  }   uiSum = uiSum >> 8;  pMotionTexture->uiMotionIndex = (uiSquare >> 8) - (uiSum * uiSum);   uiCurSum = uiCurSum >> 8;  pMotionTexture->uiTextureIndex = (uiCurSquare >> 8) - (uiCurSum * uiCurSum);} #define GENERATE_AQTEST(method) \TEST (AdaptiveQuantization, method) {\  ENFORCE_STACK_ALIGN_1D (uint8_t, pRefY,32*16,16)\  ENFORCE_STACK_ALIGN_1D (uint8_t, pSrcY,48*16,16)\  SMotionTextureUnit pMotionTexture[2];\  FillWithRandomData (pRefY,32*16);\  FillWithRandomData (pSrcY,48*16);\  SampleVariance16x16_ref (pRefY,32,pSrcY,48,&pMotionTexture[0]);\  method(pRefY,32,pSrcY,48,&pMotionTexture[1]);\  ASSERT_EQ(pMotionTexture[0].uiMotionIndex,pMotionTexture[1].uiMotionIndex);\  ASSERT_EQ(pMotionTexture[0].uiMotionIndex,pMotionTexture[1].uiMotionIndex);\  memset (pRefY,0,32*16);\  memset (pSrcY,255,48*16);\  SampleVariance16x16_ref (pRefY,32,pSrcY,48,&pMotionTexture[0]);\  method(pRefY,32,pSrcY,48,&pMotionTexture[1]);\  ASSERT_EQ(pMotionTexture[0].uiMotionIndex,pMotionTexture[1].uiMotionIndex);\  ASSERT_EQ(pMotionTexture[0].uiMotionIndex,pMotionTexture[1].uiMotionIndex);\} GENERATE_AQTEST (SampleVariance16x16_c)#if defined(X86_ASM)GENERATE_AQTEST (SampleVariance16x16_sse2)#endif #if defined(HAVE_NEON)GENERATE_AQTEST (SampleVariance16x16_neon)#endif #if defined(HAVE_NEON_AARCH64)GENERATE_AQTEST (SampleVariance16x16_AArch64_neon)#endif 

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