void VP8DspInit(void) { VP8InitClipTables(); VP8TransformWHT = TransformWHT; VP8Transform = TransformTwo; VP8TransformUV = TransformUV; VP8TransformDC = TransformDC; VP8TransformDCUV = TransformDCUV; VP8TransformAC3 = TransformAC3; VP8VFilter16 = VFilter16; VP8HFilter16 = HFilter16; VP8VFilter8 = VFilter8; VP8HFilter8 = HFilter8; VP8VFilter16i = VFilter16i; VP8HFilter16i = HFilter16i; VP8VFilter8i = VFilter8i; VP8HFilter8i = HFilter8i; VP8SimpleVFilter16 = SimpleVFilter16; VP8SimpleHFilter16 = SimpleHFilter16; VP8SimpleVFilter16i = SimpleVFilter16i; VP8SimpleHFilter16i = SimpleHFilter16i; // If defined, use CPUInfo() to overwrite some pointers with faster versions. if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_SSE2) if (VP8GetCPUInfo(kSSE2)) { VP8DspInitSSE2(); } #elif defined(WEBP_USE_NEON) if (VP8GetCPUInfo(kNEON)) { VP8DspInitNEON(); } #elif defined(WEBP_USE_MIPS32) if (VP8GetCPUInfo(kMIPS32)) { VP8DspInitMIPS32(); } #endif } }
WEBP_TSAN_IGNORE_FUNCTION void VP8DspInit(void) { if (dec_last_cpuinfo_used == VP8GetCPUInfo) return; VP8InitClipTables(); VP8TransformWHT = TransformWHT; VP8Transform = TransformTwo; VP8TransformUV = TransformUV; VP8TransformDC = TransformDC; VP8TransformDCUV = TransformDCUV; VP8TransformAC3 = TransformAC3; VP8VFilter16 = VFilter16; VP8HFilter16 = HFilter16; VP8VFilter8 = VFilter8; VP8HFilter8 = HFilter8; VP8VFilter16i = VFilter16i; VP8HFilter16i = HFilter16i; VP8VFilter8i = VFilter8i; VP8HFilter8i = HFilter8i; VP8SimpleVFilter16 = SimpleVFilter16; VP8SimpleHFilter16 = SimpleHFilter16; VP8SimpleVFilter16i = SimpleVFilter16i; VP8SimpleHFilter16i = SimpleHFilter16i; VP8PredLuma4[0] = DC4; VP8PredLuma4[1] = TM4; VP8PredLuma4[2] = VE4; VP8PredLuma4[3] = HE4; VP8PredLuma4[4] = RD4; VP8PredLuma4[5] = VR4; VP8PredLuma4[6] = LD4; VP8PredLuma4[7] = VL4; VP8PredLuma4[8] = HD4; VP8PredLuma4[9] = HU4; VP8PredLuma16[0] = DC16; VP8PredLuma16[1] = TM16; VP8PredLuma16[2] = VE16; VP8PredLuma16[3] = HE16; VP8PredLuma16[4] = DC16NoTop; VP8PredLuma16[5] = DC16NoLeft; VP8PredLuma16[6] = DC16NoTopLeft; VP8PredChroma8[0] = DC8uv; VP8PredChroma8[1] = TM8uv; VP8PredChroma8[2] = VE8uv; VP8PredChroma8[3] = HE8uv; VP8PredChroma8[4] = DC8uvNoTop; VP8PredChroma8[5] = DC8uvNoLeft; VP8PredChroma8[6] = DC8uvNoTopLeft; // If defined, use CPUInfo() to overwrite some pointers with faster versions. if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_SSE2) if (VP8GetCPUInfo(kSSE2)) { VP8DspInitSSE2(); #if defined(WEBP_USE_SSE41) if (VP8GetCPUInfo(kSSE4_1)) { VP8DspInitSSE41(); } #endif } #endif #if defined(WEBP_USE_NEON) if (VP8GetCPUInfo(kNEON)) { VP8DspInitNEON(); } #endif #if defined(WEBP_USE_MIPS32) if (VP8GetCPUInfo(kMIPS32)) { VP8DspInitMIPS32(); } #endif #if defined(WEBP_USE_MIPS_DSP_R2) if (VP8GetCPUInfo(kMIPSdspR2)) { VP8DspInitMIPSdspR2(); } #endif } dec_last_cpuinfo_used = VP8GetCPUInfo; }
WEBP_TSAN_IGNORE_FUNCTION void VP8DspInit(void) { if (dec_last_cpuinfo_used == VP8GetCPUInfo) return; VP8InitClipTables(); #if !WEBP_NEON_OMIT_C_CODE VP8TransformWHT = TransformWHT_C; VP8Transform = TransformTwo_C; VP8TransformDC = TransformDC_C; VP8TransformAC3 = TransformAC3_C; #endif VP8TransformUV = TransformUV_C; VP8TransformDCUV = TransformDCUV_C; #if !WEBP_NEON_OMIT_C_CODE VP8VFilter16 = VFilter16_C; VP8VFilter16i = VFilter16i_C; VP8HFilter16 = HFilter16_C; VP8VFilter8 = VFilter8_C; VP8VFilter8i = VFilter8i_C; VP8SimpleVFilter16 = SimpleVFilter16_C; VP8SimpleHFilter16 = SimpleHFilter16_C; VP8SimpleVFilter16i = SimpleVFilter16i_C; VP8SimpleHFilter16i = SimpleHFilter16i_C; #endif #if !WEBP_NEON_OMIT_C_CODE || WEBP_NEON_WORK_AROUND_GCC VP8HFilter16i = HFilter16i_C; VP8HFilter8 = HFilter8_C; VP8HFilter8i = HFilter8i_C; #endif #if !WEBP_NEON_OMIT_C_CODE VP8PredLuma4[0] = DC4_C; VP8PredLuma4[1] = TM4_C; VP8PredLuma4[2] = VE4_C; VP8PredLuma4[4] = RD4_C; VP8PredLuma4[6] = LD4_C; #endif VP8PredLuma4[3] = HE4_C; VP8PredLuma4[5] = VR4_C; VP8PredLuma4[7] = VL4_C; VP8PredLuma4[8] = HD4_C; VP8PredLuma4[9] = HU4_C; #if !WEBP_NEON_OMIT_C_CODE VP8PredLuma16[0] = DC16_C; VP8PredLuma16[1] = TM16_C; VP8PredLuma16[2] = VE16_C; VP8PredLuma16[3] = HE16_C; VP8PredLuma16[4] = DC16NoTop_C; VP8PredLuma16[5] = DC16NoLeft_C; VP8PredLuma16[6] = DC16NoTopLeft_C; VP8PredChroma8[0] = DC8uv_C; VP8PredChroma8[1] = TM8uv_C; VP8PredChroma8[2] = VE8uv_C; VP8PredChroma8[3] = HE8uv_C; VP8PredChroma8[4] = DC8uvNoTop_C; VP8PredChroma8[5] = DC8uvNoLeft_C; VP8PredChroma8[6] = DC8uvNoTopLeft_C; #endif VP8DitherCombine8x8 = DitherCombine8x8_C; // If defined, use CPUInfo() to overwrite some pointers with faster versions. if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_SSE2) if (VP8GetCPUInfo(kSSE2)) { VP8DspInitSSE2(); #if defined(WEBP_USE_SSE41) if (VP8GetCPUInfo(kSSE4_1)) { VP8DspInitSSE41(); } #endif } #endif #if defined(WEBP_USE_MIPS32) if (VP8GetCPUInfo(kMIPS32)) { VP8DspInitMIPS32(); } #endif #if defined(WEBP_USE_MIPS_DSP_R2) if (VP8GetCPUInfo(kMIPSdspR2)) { VP8DspInitMIPSdspR2(); } #endif #if defined(WEBP_USE_MSA) if (VP8GetCPUInfo(kMSA)) { VP8DspInitMSA(); } #endif } #if defined(WEBP_USE_NEON) if (WEBP_NEON_OMIT_C_CODE || (VP8GetCPUInfo != NULL && VP8GetCPUInfo(kNEON))) { VP8DspInitNEON(); } #endif assert(VP8TransformWHT != NULL); assert(VP8Transform != NULL); assert(VP8TransformDC != NULL); assert(VP8TransformAC3 != NULL); assert(VP8TransformUV != NULL); assert(VP8TransformDCUV != NULL); assert(VP8VFilter16 != NULL); assert(VP8HFilter16 != NULL); assert(VP8VFilter8 != NULL); assert(VP8HFilter8 != NULL); assert(VP8VFilter16i != NULL); assert(VP8HFilter16i != NULL); assert(VP8VFilter8i != NULL); assert(VP8HFilter8i != NULL); assert(VP8SimpleVFilter16 != NULL); assert(VP8SimpleHFilter16 != NULL); assert(VP8SimpleVFilter16i != NULL); assert(VP8SimpleHFilter16i != NULL); assert(VP8PredLuma4[0] != NULL); assert(VP8PredLuma4[1] != NULL); assert(VP8PredLuma4[2] != NULL); assert(VP8PredLuma4[3] != NULL); assert(VP8PredLuma4[4] != NULL); assert(VP8PredLuma4[5] != NULL); assert(VP8PredLuma4[6] != NULL); assert(VP8PredLuma4[7] != NULL); assert(VP8PredLuma4[8] != NULL); assert(VP8PredLuma4[9] != NULL); assert(VP8PredLuma16[0] != NULL); assert(VP8PredLuma16[1] != NULL); assert(VP8PredLuma16[2] != NULL); assert(VP8PredLuma16[3] != NULL); assert(VP8PredLuma16[4] != NULL); assert(VP8PredLuma16[5] != NULL); assert(VP8PredLuma16[6] != NULL); assert(VP8PredChroma8[0] != NULL); assert(VP8PredChroma8[1] != NULL); assert(VP8PredChroma8[2] != NULL); assert(VP8PredChroma8[3] != NULL); assert(VP8PredChroma8[4] != NULL); assert(VP8PredChroma8[5] != NULL); assert(VP8PredChroma8[6] != NULL); assert(VP8DitherCombine8x8 != NULL); dec_last_cpuinfo_used = VP8GetCPUInfo; }