Hardwire functions set up in WelsInitFillingPredFuncs
These are never overridden by any assembler optimized versions. (The assembler optimized intra predictor functions may use such optimized code internally anyway.) This avoids global writable data.
This commit is contained in:
@@ -165,7 +165,6 @@ void WelsIChromaPredDcTop_AArch64_neon (uint8_t* pPred, uint8_t* pRef, const int
|
|||||||
}
|
}
|
||||||
#endif//__cplusplus
|
#endif//__cplusplus
|
||||||
|
|
||||||
void WelsInitFillingPredFuncs (const uint32_t kuiCpuFlag);
|
|
||||||
void WelsInitIntraPredFuncs (SWelsFuncPtrList* pFuncList, const uint32_t kuiCpuFlag);
|
void WelsInitIntraPredFuncs (SWelsFuncPtrList* pFuncList, const uint32_t kuiCpuFlag);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,7 +181,6 @@ int32_t InitFunctionPointers (SWelsFuncPtrList* pFuncList, SWelsSvcCodingParam*
|
|||||||
InitExpandPictureFunc (& (pFuncList->sExpandPicFunc), uiCpuFlag);
|
InitExpandPictureFunc (& (pFuncList->sExpandPicFunc), uiCpuFlag);
|
||||||
|
|
||||||
/* Intra_Prediction_fn*/
|
/* Intra_Prediction_fn*/
|
||||||
WelsInitFillingPredFuncs (uiCpuFlag);
|
|
||||||
WelsInitIntraPredFuncs (pFuncList, uiCpuFlag);
|
WelsInitIntraPredFuncs (pFuncList, uiCpuFlag);
|
||||||
|
|
||||||
/* ME func */
|
/* ME func */
|
||||||
|
|||||||
@@ -65,27 +65,9 @@ static inline void WelsFillingPred1to16_c (uint8_t* pPred, const uint8_t kuiSrc)
|
|||||||
ST64 (pPred + 8, LD64 (kuiSrc8));
|
ST64 (pPred + 8, LD64 (kuiSrc8));
|
||||||
}
|
}
|
||||||
|
|
||||||
PFillingPred WelsFillingPred8to16;
|
#define WelsFillingPred8to16 WelsFillingPred8to16_c
|
||||||
PFillingPred WelsFillingPred8x2to16;
|
#define WelsFillingPred8x2to16 WelsFillingPred8x2to16_c
|
||||||
PFillingPred1to16 WelsFillingPred1to16;
|
#define WelsFillingPred1to16 WelsFillingPred1to16_c
|
||||||
|
|
||||||
void WelsInitFillingPredFuncs (const uint32_t kuiCpuFlag) {
|
|
||||||
WelsFillingPred8to16 = WelsFillingPred8to16_c;
|
|
||||||
WelsFillingPred8x2to16 = WelsFillingPred8x2to16_c;
|
|
||||||
WelsFillingPred1to16 = WelsFillingPred1to16_c;
|
|
||||||
|
|
||||||
#if defined(X86_ASM)
|
|
||||||
if (kuiCpuFlag & WELS_CPU_MMXEXT) {
|
|
||||||
// WelsFillingPred8to16 = WelsFillingPred8to16_mmx;
|
|
||||||
// WelsFillingPred8x2to16 = WelsFillingPred8x2to16_mmx;
|
|
||||||
// WelsFillingPred1to16 = WelsFillingPred1to16_mmx;
|
|
||||||
}
|
|
||||||
if (kuiCpuFlag & WELS_CPU_SSE2) {
|
|
||||||
// WelsFillingPred8x2to16 = WelsFillingPred8x2to16_sse2;
|
|
||||||
// WelsFillingPred1to16 = WelsFillingPred1to16_sse2;
|
|
||||||
}
|
|
||||||
#endif//X86_ASM
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,6 @@ TEST (GetIntraPredictorTest, TestGetI4x4LumaPredV) {
|
|||||||
pRef[i] = rand() % 256;
|
pRef[i] = rand() % 256;
|
||||||
|
|
||||||
const int32_t kkiStride = 0;
|
const int32_t kkiStride = 0;
|
||||||
const uint32_t kuiCpuFlag = 0;
|
|
||||||
WelsInitFillingPredFuncs (kuiCpuFlag);
|
|
||||||
WelsI4x4LumaPredV_c (pPred, pRef, kkiStride);
|
WelsI4x4LumaPredV_c (pPred, pRef, kkiStride);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
@@ -47,15 +45,12 @@ TEST (GetIntraPredictorTest, TestGetI4x4LumaPredH) {
|
|||||||
const uint8_t kuiV3[4] = {kuiH3, kuiH3, kuiH3, kuiH3};
|
const uint8_t kuiV3[4] = {kuiH3, kuiH3, kuiH3, kuiH3};
|
||||||
const uint8_t kuiV4[4] = {kuiH4, kuiH4, kuiH4, kuiH4};
|
const uint8_t kuiV4[4] = {kuiH4, kuiH4, kuiH4, kuiH4};
|
||||||
|
|
||||||
const uint32_t kuiCpuFlag = 0;
|
|
||||||
|
|
||||||
ENFORCE_STACK_ALIGN_1D (uint8_t, uiV, 16, 16) // TobeCont'd about assign opt as follows
|
ENFORCE_STACK_ALIGN_1D (uint8_t, uiV, 16, 16) // TobeCont'd about assign opt as follows
|
||||||
ST32 (&uiV[0], LD32 (kuiV1));
|
ST32 (&uiV[0], LD32 (kuiV1));
|
||||||
ST32 (&uiV[4], LD32 (kuiV2));
|
ST32 (&uiV[4], LD32 (kuiV2));
|
||||||
ST32 (&uiV[8], LD32 (kuiV3));
|
ST32 (&uiV[8], LD32 (kuiV3));
|
||||||
ST32 (&uiV[12], LD32 (kuiV4));
|
ST32 (&uiV[12], LD32 (kuiV4));
|
||||||
|
|
||||||
WelsInitFillingPredFuncs (kuiCpuFlag);
|
|
||||||
WelsI4x4LumaPredH_c (pPred, pRef, kiStride);
|
WelsI4x4LumaPredH_c (pPred, pRef, kiStride);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
@@ -99,8 +94,6 @@ TEST (GetIntraPredictorTest, TestGetI4x4LumaPredDDL) {
|
|||||||
uiV[11] = uiV[14] = kuiDDL5;
|
uiV[11] = uiV[14] = kuiDDL5;
|
||||||
uiV[15] = kuiDDL6;
|
uiV[15] = kuiDDL6;
|
||||||
|
|
||||||
const uint32_t kuiCpuFlag = 0;
|
|
||||||
WelsInitFillingPredFuncs (kuiCpuFlag);
|
|
||||||
WelsI4x4LumaPredDDL_c (pPred, pRef, kiStride);
|
WelsI4x4LumaPredDDL_c (pPred, pRef, kiStride);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
@@ -133,8 +126,6 @@ TEST (GetIntraPredictorTest, TestGetI4x4LumaPredDDLTop) {
|
|||||||
uiV[2] = uiV[5] = uiV[8] = kuiDLT2;
|
uiV[2] = uiV[5] = uiV[8] = kuiDLT2;
|
||||||
uiV[3] = kuiDLT3;
|
uiV[3] = kuiDLT3;
|
||||||
|
|
||||||
const uint32_t kuiCpuFlag = 0;
|
|
||||||
WelsInitFillingPredFuncs (kuiCpuFlag);
|
|
||||||
WelsI4x4LumaPredDDLTop_c (pPred, pRef, kiStride);
|
WelsI4x4LumaPredDDLTop_c (pPred, pRef, kiStride);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
@@ -190,8 +181,6 @@ TEST (GetIntraPredictorTest, TestGetI4x4LumaPredDDR) {
|
|||||||
uiV[8] = uiV[13] = kuiDDR5;
|
uiV[8] = uiV[13] = kuiDDR5;
|
||||||
uiV[12] = kuiDDR6;
|
uiV[12] = kuiDDR6;
|
||||||
|
|
||||||
const uint32_t kuiCpuFlag = 0;
|
|
||||||
WelsInitFillingPredFuncs (kuiCpuFlag);
|
|
||||||
WelsI4x4LumaPredDDR_c (pPred, pRef, kiStride);
|
WelsI4x4LumaPredDDR_c (pPred, pRef, kiStride);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
@@ -240,8 +229,6 @@ TEST (GetIntraPredictorTest, TestGetI4x4LumaPredVL) {
|
|||||||
uiV[11] = kuiVL4;
|
uiV[11] = kuiVL4;
|
||||||
uiV[15] = kuiVL9;
|
uiV[15] = kuiVL9;
|
||||||
|
|
||||||
const uint32_t kuiCpuFlag = 0;
|
|
||||||
WelsInitFillingPredFuncs (kuiCpuFlag);
|
|
||||||
WelsI4x4LumaPredVL_c (pPred, pRef, kiStride);
|
WelsI4x4LumaPredVL_c (pPred, pRef, kiStride);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
@@ -285,8 +272,6 @@ TEST (GetIntraPredictorTest, TestGetI4x4LumaPredVLTop) {
|
|||||||
uiV[6] = uiV[13] = kuiVLT6;
|
uiV[6] = uiV[13] = kuiVLT6;
|
||||||
uiV[7] = uiV[14] = uiV[15] = kuiVLT7;
|
uiV[7] = uiV[14] = uiV[15] = kuiVLT7;
|
||||||
|
|
||||||
const uint32_t kuiCpuFlag = 0;
|
|
||||||
WelsInitFillingPredFuncs (kuiCpuFlag);
|
|
||||||
WelsI4x4LumaPredVLTop_c (pPred, pRef, kiStride);
|
WelsI4x4LumaPredVLTop_c (pPred, pRef, kiStride);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
@@ -340,8 +325,6 @@ TEST (GetIntraPredictorTest, TestGetI4x4LumaPredVR) {
|
|||||||
uiV[8] = kuiVR8;
|
uiV[8] = kuiVR8;
|
||||||
uiV[12] = kuiVR9;
|
uiV[12] = kuiVR9;
|
||||||
|
|
||||||
const uint32_t kuiCpuFlag = 0;
|
|
||||||
WelsInitFillingPredFuncs (kuiCpuFlag);
|
|
||||||
WelsI4x4LumaPredVR_c (pPred, pRef, kiStride);
|
WelsI4x4LumaPredVR_c (pPred, pRef, kiStride);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
@@ -388,8 +371,6 @@ TEST (GetIntraPredictorTest, TestGetI4x4LumaPredHU) {
|
|||||||
uiV[7] = uiV[9] = kuiHU5;
|
uiV[7] = uiV[9] = kuiHU5;
|
||||||
memset (&uiV[10], kuiL3, 6 * sizeof (uint8_t));
|
memset (&uiV[10], kuiL3, 6 * sizeof (uint8_t));
|
||||||
|
|
||||||
const uint32_t kuiCpuFlag = 0;
|
|
||||||
WelsInitFillingPredFuncs (kuiCpuFlag);
|
|
||||||
WelsI4x4LumaPredHU_c (pPred, pRef, kiStride);
|
WelsI4x4LumaPredHU_c (pPred, pRef, kiStride);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
@@ -444,8 +425,6 @@ TEST (GetIntraPredictorTest, TestGetI4x4LumaPredHD) {
|
|||||||
uiV[12] = kuiHD8;
|
uiV[12] = kuiHD8;
|
||||||
uiV[13] = kuiHD9;
|
uiV[13] = kuiHD9;
|
||||||
|
|
||||||
const uint32_t kuiCpuFlag = 0;
|
|
||||||
WelsInitFillingPredFuncs (kuiCpuFlag);
|
|
||||||
WelsI4x4LumaPredHD_c (pPred, pRef, kiStride);
|
WelsI4x4LumaPredHD_c (pPred, pRef, kiStride);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
|
|||||||
@@ -83,7 +83,6 @@ TEST (IntraSadSatdFuncTest, WelsSampleSatdThree4x4_sse2) {
|
|||||||
uint8_t* pDec = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeDec << 5, "pDec");
|
uint8_t* pDec = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeDec << 5, "pDec");
|
||||||
uint8_t* pEnc = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeEnc << 5, "pEnc");
|
uint8_t* pEnc = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeEnc << 5, "pEnc");
|
||||||
uint8_t* pDst = (uint8_t*)cMemoryAlign.WelsMalloc (512, "pDst");
|
uint8_t* pDst = (uint8_t*)cMemoryAlign.WelsMalloc (512, "pDst");
|
||||||
WelsInitFillingPredFuncs (WELS_CPU_SSE2);
|
|
||||||
for (int i = 0; i < (iLineSizeDec << 5); i++)
|
for (int i = 0; i < (iLineSizeDec << 5); i++)
|
||||||
pDec[i] = rand() % 256;
|
pDec[i] = rand() % 256;
|
||||||
for (int i = 0; i < (iLineSizeEnc << 5); i++)
|
for (int i = 0; i < (iLineSizeEnc << 5); i++)
|
||||||
|
|||||||
Reference in New Issue
Block a user