WEBP_TSAN_IGNORE_FUNCTION void WebPRescalerDspInit(void) { if (rescaler_last_cpuinfo_used == VP8GetCPUInfo) return; WebPRescalerImportRowExpand = WebPRescalerImportRowExpandC; WebPRescalerImportRowShrink = WebPRescalerImportRowShrinkC; WebPRescalerExportRowExpand = WebPRescalerExportRowExpandC; WebPRescalerExportRowShrink = WebPRescalerExportRowShrinkC; if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_SSE2) if (VP8GetCPUInfo(kSSE2)) { WebPRescalerDspInitSSE2(); } #endif #if defined(WEBP_USE_MIPS32) if (VP8GetCPUInfo(kMIPS32)) { WebPRescalerDspInitMIPS32(); } #endif #if defined(WEBP_USE_MIPS_DSP_R2) if (VP8GetCPUInfo(kMIPSdspR2)) { WebPRescalerDspInitMIPSdspR2(); } #endif } rescaler_last_cpuinfo_used = VP8GetCPUInfo; }
WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplers(void) { #ifdef FANCY_UPSAMPLING WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair; WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair; WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair; WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair; WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair; WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair; WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair; WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair; WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair; WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair; WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair; // If defined, use CPUInfo() to overwrite some pointers with faster versions. if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_SSE2) if (VP8GetCPUInfo(kSSE2)) { WebPInitUpsamplersSSE2(); } #endif #if defined(WEBP_USE_NEON) if (VP8GetCPUInfo(kNEON)) { WebPInitUpsamplersNEON(); } #endif #if defined(WEBP_USE_MIPS_DSP_R2) if (VP8GetCPUInfo(kMIPSdspR2)) { WebPInitUpsamplersMIPSdspR2(); } #endif } #endif // FANCY_UPSAMPLING }
WEBP_TSAN_IGNORE_FUNCTION void VP8FiltersInit(void) { if (filters_last_cpuinfo_used == VP8GetCPUInfo) return; WebPUnfilters[WEBP_FILTER_NONE] = NULL; WebPUnfilters[WEBP_FILTER_HORIZONTAL] = HorizontalUnfilter; WebPUnfilters[WEBP_FILTER_VERTICAL] = VerticalUnfilter; WebPUnfilters[WEBP_FILTER_GRADIENT] = GradientUnfilter; WebPFilters[WEBP_FILTER_NONE] = NULL; WebPFilters[WEBP_FILTER_HORIZONTAL] = HorizontalFilter; WebPFilters[WEBP_FILTER_VERTICAL] = VerticalFilter; WebPFilters[WEBP_FILTER_GRADIENT] = GradientFilter; if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_SSE2) if (VP8GetCPUInfo(kSSE2)) { VP8FiltersInitSSE2(); } #endif #if defined(WEBP_USE_MIPS_DSP_R2) if (VP8GetCPUInfo(kMIPSdspR2)) { VP8FiltersInitMIPSdspR2(); } #endif } filters_last_cpuinfo_used = VP8GetCPUInfo; }
void VP8DspInit(void) { DspInitTables(); VP8Transform = TransformTwo; VP8TransformUV = TransformUV; VP8TransformDC = TransformDC; VP8TransformDCUV = TransformDCUV; 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) { #if defined(__SSE2__) || defined(_MSC_VER) if (VP8GetCPUInfo(kSSE2)) { VP8DspInitSSE2(); } #elif defined(__GNUC__) && defined(__ARM_NEON__) if (VP8GetCPUInfo(kNEON)) { VP8DspInitNEON(); } #endif } }
void WebPInitSamplers(void) { WebPSamplers[MODE_RGB] = YuvToRgbRow; WebPSamplers[MODE_RGBA] = YuvToRgbaRow; WebPSamplers[MODE_BGR] = YuvToBgrRow; WebPSamplers[MODE_BGRA] = YuvToBgraRow; WebPSamplers[MODE_ARGB] = YuvToArgbRow; WebPSamplers[MODE_RGBA_4444] = YuvToRgba4444Row; WebPSamplers[MODE_RGB_565] = YuvToRgb565Row; WebPSamplers[MODE_rgbA] = YuvToRgbaRow; WebPSamplers[MODE_bgrA] = YuvToBgraRow; WebPSamplers[MODE_Argb] = YuvToArgbRow; WebPSamplers[MODE_rgbA_4444] = YuvToRgba4444Row; // If defined, use CPUInfo() to overwrite some pointers with faster versions. if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_SSE2) if (VP8GetCPUInfo(kSSE2)) { WebPInitSamplersSSE2(); } #endif // WEBP_USE_SSE2 #if defined(WEBP_USE_MIPS32) if (VP8GetCPUInfo(kMIPS32)) { WebPInitSamplersMIPS32(); } #endif // WEBP_USE_MIPS32 #if defined(WEBP_USE_MIPS_DSP_R2) if (VP8GetCPUInfo(kMIPSdspR2)) { WebPInitSamplersMIPSdspR2(); } #endif // WEBP_USE_MIPS_DSP_R2 } }
void WebPInitUpsamplers(void) { #ifdef FANCY_UPSAMPLING WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair; WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair; WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair; WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair; WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair; WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair; WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair; WebPUpsamplersKeepAlpha[MODE_RGB] = UpsampleRgbLinePair; WebPUpsamplersKeepAlpha[MODE_RGBA] = UpsampleRgbaKeepAlphaLinePair; WebPUpsamplersKeepAlpha[MODE_BGR] = UpsampleBgrLinePair; WebPUpsamplersKeepAlpha[MODE_BGRA] = UpsampleBgraKeepAlphaLinePair; WebPUpsamplersKeepAlpha[MODE_ARGB] = UpsampleArgbKeepAlphaLinePair; WebPUpsamplersKeepAlpha[MODE_RGBA_4444] = UpsampleRgba4444KeepAlphaLinePair; WebPUpsamplersKeepAlpha[MODE_RGB_565] = UpsampleRgb565LinePair; // If defined, use CPUInfo() to overwrite some pointers with faster versions. if (VP8GetCPUInfo) { #if defined(WEBP_USE_SSE2) if (VP8GetCPUInfo(kSSE2)) { WebPInitUpsamplersSSE2(); } #endif } #endif // FANCY_UPSAMPLING }
void VP8GetResidualCostInit(void) { if (VP8GetResidualCost == NULL) { VP8GetResidualCost = GetResidualCost; if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_MIPS32) if (VP8GetCPUInfo(kMIPS32)) { VP8GetResidualCost = VP8GetResidualCostMIPS32; } #endif } } }
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 WebPInitYUV444Converters(void) { WebPYUV444Converters[MODE_RGB] = Yuv444ToRgb; WebPYUV444Converters[MODE_RGBA] = Yuv444ToRgba; WebPYUV444Converters[MODE_BGR] = Yuv444ToBgr; WebPYUV444Converters[MODE_BGRA] = Yuv444ToBgra; WebPYUV444Converters[MODE_ARGB] = Yuv444ToArgb; WebPYUV444Converters[MODE_RGBA_4444] = Yuv444ToRgba4444; WebPYUV444Converters[MODE_RGB_565] = Yuv444ToRgb565; WebPYUV444Converters[MODE_rgbA] = Yuv444ToRgba; WebPYUV444Converters[MODE_bgrA] = Yuv444ToBgra; WebPYUV444Converters[MODE_Argb] = Yuv444ToArgb; WebPYUV444Converters[MODE_rgbA_4444] = Yuv444ToRgba4444; if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_MIPS_DSP_R2) if (VP8GetCPUInfo(kMIPSdspR2)) { WebPInitYUV444ConvertersMIPSdspR2(); } #endif } }
WEBP_TSAN_IGNORE_FUNCTION void VP8SSIMDspInit(void) { if (ssim_last_cpuinfo_used == VP8GetCPUInfo) return; #if !defined(WEBP_REDUCE_SIZE) VP8SSIMGetClipped = SSIMGetClipped_C; VP8SSIMGet = SSIMGet_C; #endif #if !defined(WEBP_DISABLE_STATS) VP8AccumulateSSE = AccumulateSSE_C; #endif if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_SSE2) if (VP8GetCPUInfo(kSSE2)) { VP8SSIMDspInitSSE2(); } #endif } ssim_last_cpuinfo_used = VP8GetCPUInfo; }
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; }