mirror of
https://github.com/webmproject/libwebp.git
synced 2025-02-13 15:32:53 +01:00
Merge "yuv: harmonize suffix naming"
This commit is contained in:
commit
0c83a8bc69
@ -115,7 +115,7 @@ WEBP_TSAN_IGNORE_FUNCTION void WebPInitSamplers(void) {
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// ARGB -> YUV converters
|
// ARGB -> YUV converters
|
||||||
|
|
||||||
static void ConvertARGBToY(const uint32_t* argb, uint8_t* y, int width) {
|
static void ConvertARGBToY_C(const uint32_t* argb, uint8_t* y, int width) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < width; ++i) {
|
for (i = 0; i < width; ++i) {
|
||||||
const uint32_t p = argb[i];
|
const uint32_t p = argb[i];
|
||||||
@ -167,14 +167,14 @@ void WebPConvertARGBToUV_C(const uint32_t* argb, uint8_t* u, uint8_t* v,
|
|||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
static void ConvertRGB24ToY(const uint8_t* rgb, uint8_t* y, int width) {
|
static void ConvertRGB24ToY_C(const uint8_t* rgb, uint8_t* y, int width) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < width; ++i, rgb += 3) {
|
for (i = 0; i < width; ++i, rgb += 3) {
|
||||||
y[i] = VP8RGBToY(rgb[0], rgb[1], rgb[2], YUV_HALF);
|
y[i] = VP8RGBToY(rgb[0], rgb[1], rgb[2], YUV_HALF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ConvertBGR24ToY(const uint8_t* bgr, uint8_t* y, int width) {
|
static void ConvertBGR24ToY_C(const uint8_t* bgr, uint8_t* y, int width) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < width; ++i, bgr += 3) {
|
for (i = 0; i < width; ++i, bgr += 3) {
|
||||||
y[i] = VP8RGBToY(bgr[2], bgr[1], bgr[0], YUV_HALF);
|
y[i] = VP8RGBToY(bgr[2], bgr[1], bgr[0], YUV_HALF);
|
||||||
@ -262,11 +262,11 @@ extern void WebPInitSharpYUVNEON(void);
|
|||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitConvertARGBToYUV(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitConvertARGBToYUV(void) {
|
||||||
if (rgba_to_yuv_last_cpuinfo_used == VP8GetCPUInfo) return;
|
if (rgba_to_yuv_last_cpuinfo_used == VP8GetCPUInfo) return;
|
||||||
|
|
||||||
WebPConvertARGBToY = ConvertARGBToY;
|
WebPConvertARGBToY = ConvertARGBToY_C;
|
||||||
WebPConvertARGBToUV = WebPConvertARGBToUV_C;
|
WebPConvertARGBToUV = WebPConvertARGBToUV_C;
|
||||||
|
|
||||||
WebPConvertRGB24ToY = ConvertRGB24ToY;
|
WebPConvertRGB24ToY = ConvertRGB24ToY_C;
|
||||||
WebPConvertBGR24ToY = ConvertBGR24ToY;
|
WebPConvertBGR24ToY = ConvertBGR24ToY_C;
|
||||||
|
|
||||||
WebPConvertRGBA32ToUV = WebPConvertRGBA32ToUV_C;
|
WebPConvertRGBA32ToUV = WebPConvertRGBA32ToUV_C;
|
||||||
|
|
||||||
|
@ -77,10 +77,10 @@ static void FUNC_NAME(const uint8_t* y, \
|
|||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
ROW_FUNC(YuvToRgbRow, 3, 0, 1, 2, 0)
|
ROW_FUNC(YuvToRgbRow_MIPS32, 3, 0, 1, 2, 0)
|
||||||
ROW_FUNC(YuvToRgbaRow, 4, 0, 1, 2, 3)
|
ROW_FUNC(YuvToRgbaRow_MIPS32, 4, 0, 1, 2, 3)
|
||||||
ROW_FUNC(YuvToBgrRow, 3, 2, 1, 0, 0)
|
ROW_FUNC(YuvToBgrRow_MIPS32, 3, 2, 1, 0, 0)
|
||||||
ROW_FUNC(YuvToBgraRow, 4, 2, 1, 0, 3)
|
ROW_FUNC(YuvToBgraRow_MIPS32, 4, 2, 1, 0, 3)
|
||||||
|
|
||||||
#undef ROW_FUNC
|
#undef ROW_FUNC
|
||||||
|
|
||||||
@ -90,10 +90,10 @@ ROW_FUNC(YuvToBgraRow, 4, 2, 1, 0, 3)
|
|||||||
extern void WebPInitSamplersMIPS32(void);
|
extern void WebPInitSamplersMIPS32(void);
|
||||||
|
|
||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitSamplersMIPS32(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitSamplersMIPS32(void) {
|
||||||
WebPSamplers[MODE_RGB] = YuvToRgbRow;
|
WebPSamplers[MODE_RGB] = YuvToRgbRow_MIPS32;
|
||||||
WebPSamplers[MODE_RGBA] = YuvToRgbaRow;
|
WebPSamplers[MODE_RGBA] = YuvToRgbaRow_MIPS32;
|
||||||
WebPSamplers[MODE_BGR] = YuvToBgrRow;
|
WebPSamplers[MODE_BGR] = YuvToBgrRow_MIPS32;
|
||||||
WebPSamplers[MODE_BGRA] = YuvToBgraRow;
|
WebPSamplers[MODE_BGRA] = YuvToBgraRow_MIPS32;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // !WEBP_USE_MIPS32
|
#else // !WEBP_USE_MIPS32
|
||||||
|
@ -105,10 +105,10 @@ static void FUNC_NAME(const uint8_t* y, \
|
|||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
ROW_FUNC(YuvToRgbRow, 3, 0, 1, 2, 0)
|
ROW_FUNC(YuvToRgbRow_MIPSdspR2, 3, 0, 1, 2, 0)
|
||||||
ROW_FUNC(YuvToRgbaRow, 4, 0, 1, 2, 3)
|
ROW_FUNC(YuvToRgbaRow_MIPSdspR2, 4, 0, 1, 2, 3)
|
||||||
ROW_FUNC(YuvToBgrRow, 3, 2, 1, 0, 0)
|
ROW_FUNC(YuvToBgrRow_MIPSdspR2, 3, 2, 1, 0, 0)
|
||||||
ROW_FUNC(YuvToBgraRow, 4, 2, 1, 0, 3)
|
ROW_FUNC(YuvToBgraRow_MIPSdspR2, 4, 2, 1, 0, 3)
|
||||||
|
|
||||||
#undef ROW_FUNC
|
#undef ROW_FUNC
|
||||||
#undef ASM_CLOBBER_LIST
|
#undef ASM_CLOBBER_LIST
|
||||||
@ -121,10 +121,10 @@ ROW_FUNC(YuvToBgraRow, 4, 2, 1, 0, 3)
|
|||||||
extern void WebPInitSamplersMIPSdspR2(void);
|
extern void WebPInitSamplersMIPSdspR2(void);
|
||||||
|
|
||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitSamplersMIPSdspR2(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitSamplersMIPSdspR2(void) {
|
||||||
WebPSamplers[MODE_RGB] = YuvToRgbRow;
|
WebPSamplers[MODE_RGB] = YuvToRgbRow_MIPSdspR2;
|
||||||
WebPSamplers[MODE_RGBA] = YuvToRgbaRow;
|
WebPSamplers[MODE_RGBA] = YuvToRgbaRow_MIPSdspR2;
|
||||||
WebPSamplers[MODE_BGR] = YuvToBgrRow;
|
WebPSamplers[MODE_BGR] = YuvToBgrRow_MIPSdspR2;
|
||||||
WebPSamplers[MODE_BGRA] = YuvToBgraRow;
|
WebPSamplers[MODE_BGRA] = YuvToBgraRow_MIPSdspR2;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // !WEBP_USE_MIPS_DSP_R2
|
#else // !WEBP_USE_MIPS_DSP_R2
|
||||||
|
@ -282,7 +282,6 @@ WEBP_TSAN_IGNORE_FUNCTION void WebPInitSharpYUVNEON(void) {
|
|||||||
|
|
||||||
#else // !WEBP_USE_NEON
|
#else // !WEBP_USE_NEON
|
||||||
|
|
||||||
WEBP_DSP_INIT_STUB(WebPInitSamplersNEON)
|
|
||||||
WEBP_DSP_INIT_STUB(WebPInitConvertARGBToYUVNEON)
|
WEBP_DSP_INIT_STUB(WebPInitConvertARGBToYUVNEON)
|
||||||
WEBP_DSP_INIT_STUB(WebPInitSharpYUVNEON)
|
WEBP_DSP_INIT_STUB(WebPInitSharpYUVNEON)
|
||||||
|
|
||||||
|
@ -287,8 +287,9 @@ void VP8YuvToBgr32_SSE2(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Arbitrary-length row conversion functions
|
// Arbitrary-length row conversion functions
|
||||||
|
|
||||||
static void YuvToRgbaRow(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
static void YuvToRgbaRow_SSE2(const uint8_t* y,
|
||||||
uint8_t* dst, int len) {
|
const uint8_t* u, const uint8_t* v,
|
||||||
|
uint8_t* dst, int len) {
|
||||||
const __m128i kAlpha = _mm_set1_epi16(255);
|
const __m128i kAlpha = _mm_set1_epi16(255);
|
||||||
int n;
|
int n;
|
||||||
for (n = 0; n + 8 <= len; n += 8, dst += 32) {
|
for (n = 0; n + 8 <= len; n += 8, dst += 32) {
|
||||||
@ -308,8 +309,9 @@ static void YuvToRgbaRow(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void YuvToBgraRow(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
static void YuvToBgraRow_SSE2(const uint8_t* y,
|
||||||
uint8_t* dst, int len) {
|
const uint8_t* u, const uint8_t* v,
|
||||||
|
uint8_t* dst, int len) {
|
||||||
const __m128i kAlpha = _mm_set1_epi16(255);
|
const __m128i kAlpha = _mm_set1_epi16(255);
|
||||||
int n;
|
int n;
|
||||||
for (n = 0; n + 8 <= len; n += 8, dst += 32) {
|
for (n = 0; n + 8 <= len; n += 8, dst += 32) {
|
||||||
@ -329,8 +331,9 @@ static void YuvToBgraRow(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void YuvToArgbRow(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
static void YuvToArgbRow_SSE2(const uint8_t* y,
|
||||||
uint8_t* dst, int len) {
|
const uint8_t* u, const uint8_t* v,
|
||||||
|
uint8_t* dst, int len) {
|
||||||
const __m128i kAlpha = _mm_set1_epi16(255);
|
const __m128i kAlpha = _mm_set1_epi16(255);
|
||||||
int n;
|
int n;
|
||||||
for (n = 0; n + 8 <= len; n += 8, dst += 32) {
|
for (n = 0; n + 8 <= len; n += 8, dst += 32) {
|
||||||
@ -350,8 +353,9 @@ static void YuvToArgbRow(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void YuvToRgbRow(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
static void YuvToRgbRow_SSE2(const uint8_t* y,
|
||||||
uint8_t* dst, int len) {
|
const uint8_t* u, const uint8_t* v,
|
||||||
|
uint8_t* dst, int len) {
|
||||||
int n;
|
int n;
|
||||||
for (n = 0; n + 32 <= len; n += 32, dst += 32 * 3) {
|
for (n = 0; n + 32 <= len; n += 32, dst += 32 * 3) {
|
||||||
__m128i R0, R1, R2, R3, G0, G1, G2, G3, B0, B1, B2, B3;
|
__m128i R0, R1, R2, R3, G0, G1, G2, G3, B0, B1, B2, B3;
|
||||||
@ -386,8 +390,9 @@ static void YuvToRgbRow(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void YuvToBgrRow(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
static void YuvToBgrRow_SSE2(const uint8_t* y,
|
||||||
uint8_t* dst, int len) {
|
const uint8_t* u, const uint8_t* v,
|
||||||
|
uint8_t* dst, int len) {
|
||||||
int n;
|
int n;
|
||||||
for (n = 0; n + 32 <= len; n += 32, dst += 32 * 3) {
|
for (n = 0; n + 32 <= len; n += 32, dst += 32 * 3) {
|
||||||
__m128i R0, R1, R2, R3, G0, G1, G2, G3, B0, B1, B2, B3;
|
__m128i R0, R1, R2, R3, G0, G1, G2, G3, B0, B1, B2, B3;
|
||||||
@ -428,11 +433,11 @@ static void YuvToBgrRow(const uint8_t* y, const uint8_t* u, const uint8_t* v,
|
|||||||
extern void WebPInitSamplersSSE2(void);
|
extern void WebPInitSamplersSSE2(void);
|
||||||
|
|
||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitSamplersSSE2(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitSamplersSSE2(void) {
|
||||||
WebPSamplers[MODE_RGB] = YuvToRgbRow;
|
WebPSamplers[MODE_RGB] = YuvToRgbRow_SSE2;
|
||||||
WebPSamplers[MODE_RGBA] = YuvToRgbaRow;
|
WebPSamplers[MODE_RGBA] = YuvToRgbaRow_SSE2;
|
||||||
WebPSamplers[MODE_BGR] = YuvToBgrRow;
|
WebPSamplers[MODE_BGR] = YuvToBgrRow_SSE2;
|
||||||
WebPSamplers[MODE_BGRA] = YuvToBgraRow;
|
WebPSamplers[MODE_BGRA] = YuvToBgraRow_SSE2;
|
||||||
WebPSamplers[MODE_ARGB] = YuvToArgbRow;
|
WebPSamplers[MODE_ARGB] = YuvToArgbRow_SSE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@ -549,7 +554,7 @@ static WEBP_INLINE void ConvertRGBToUV(const __m128i* const R,
|
|||||||
#undef MK_CST_16
|
#undef MK_CST_16
|
||||||
#undef TRANSFORM
|
#undef TRANSFORM
|
||||||
|
|
||||||
static void ConvertRGB24ToY(const uint8_t* rgb, uint8_t* y, int width) {
|
static void ConvertRGB24ToY_SSE2(const uint8_t* rgb, uint8_t* y, int width) {
|
||||||
const int max_width = width & ~31;
|
const int max_width = width & ~31;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < max_width; rgb += 3 * 16 * 2) {
|
for (i = 0; i < max_width; rgb += 3 * 16 * 2) {
|
||||||
@ -583,7 +588,7 @@ static void ConvertRGB24ToY(const uint8_t* rgb, uint8_t* y, int width) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ConvertBGR24ToY(const uint8_t* bgr, uint8_t* y, int width) {
|
static void ConvertBGR24ToY_SSE2(const uint8_t* bgr, uint8_t* y, int width) {
|
||||||
const int max_width = width & ~31;
|
const int max_width = width & ~31;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < max_width; bgr += 3 * 16 * 2) {
|
for (i = 0; i < max_width; bgr += 3 * 16 * 2) {
|
||||||
@ -617,7 +622,7 @@ static void ConvertBGR24ToY(const uint8_t* bgr, uint8_t* y, int width) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ConvertARGBToY(const uint32_t* argb, uint8_t* y, int width) {
|
static void ConvertARGBToY_SSE2(const uint32_t* argb, uint8_t* y, int width) {
|
||||||
const int max_width = width & ~15;
|
const int max_width = width & ~15;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < max_width; i += 16) {
|
for (i = 0; i < max_width; i += 16) {
|
||||||
@ -644,8 +649,9 @@ static void HorizontalAddPack(const __m128i* const A, const __m128i* const B,
|
|||||||
*out = _mm_packs_epi32(C, D);
|
*out = _mm_packs_epi32(C, D);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ConvertARGBToUV(const uint32_t* argb, uint8_t* u, uint8_t* v,
|
static void ConvertARGBToUV_SSE2(const uint32_t* argb,
|
||||||
int src_width, int do_store) {
|
uint8_t* u, uint8_t* v,
|
||||||
|
int src_width, int do_store) {
|
||||||
const int max_width = src_width & ~31;
|
const int max_width = src_width & ~31;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < max_width; i += 32, u += 16, v += 16) {
|
for (i = 0; i < max_width; i += 32, u += 16, v += 16) {
|
||||||
@ -701,8 +707,8 @@ static WEBP_INLINE void RGBA32PackedToPlanar_16b(const uint16_t* const rgbx,
|
|||||||
*b = _mm_unpacklo_epi64(B1, B3);
|
*b = _mm_unpacklo_epi64(B1, B3);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ConvertRGBA32ToUV(const uint16_t* rgb,
|
static void ConvertRGBA32ToUV_SSE2(const uint16_t* rgb,
|
||||||
uint8_t* u, uint8_t* v, int width) {
|
uint8_t* u, uint8_t* v, int width) {
|
||||||
const int max_width = width & ~15;
|
const int max_width = width & ~15;
|
||||||
const uint16_t* const last_rgb = rgb + 4 * max_width;
|
const uint16_t* const last_rgb = rgb + 4 * max_width;
|
||||||
while (rgb < last_rgb) {
|
while (rgb < last_rgb) {
|
||||||
@ -727,13 +733,13 @@ static void ConvertRGBA32ToUV(const uint16_t* rgb,
|
|||||||
extern void WebPInitConvertARGBToYUVSSE2(void);
|
extern void WebPInitConvertARGBToYUVSSE2(void);
|
||||||
|
|
||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitConvertARGBToYUVSSE2(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitConvertARGBToYUVSSE2(void) {
|
||||||
WebPConvertARGBToY = ConvertARGBToY;
|
WebPConvertARGBToY = ConvertARGBToY_SSE2;
|
||||||
WebPConvertARGBToUV = ConvertARGBToUV;
|
WebPConvertARGBToUV = ConvertARGBToUV_SSE2;
|
||||||
|
|
||||||
WebPConvertRGB24ToY = ConvertRGB24ToY;
|
WebPConvertRGB24ToY = ConvertRGB24ToY_SSE2;
|
||||||
WebPConvertBGR24ToY = ConvertBGR24ToY;
|
WebPConvertBGR24ToY = ConvertBGR24ToY_SSE2;
|
||||||
|
|
||||||
WebPConvertRGBA32ToUV = ConvertRGBA32ToUV;
|
WebPConvertRGBA32ToUV = ConvertRGBA32ToUV_SSE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user