From 79bf46f1202ebb39a44175cdbc4ad72ec9dbafad Mon Sep 17 00:00:00 2001 From: Pascal Massimino Date: Fri, 20 Jan 2017 14:36:21 +0100 Subject: [PATCH] rename the pretentious SmartYUV into SharpYUV Change-Id: Ifeeb9cb85896c5f3ba0cc1c2c821f8d00295f69e --- src/dsp/dsp.h | 6 +++--- src/dsp/yuv.c | 22 +++++++++++----------- src/dsp/yuv_sse2.c | 18 +++++++++--------- src/enc/picture_csp_enc.c | 16 ++++++++++------ src/enc/webp_enc.c | 2 +- src/webp/encode.h | 8 +++++--- 6 files changed, 39 insertions(+), 33 deletions(-) diff --git a/src/dsp/dsp.h b/src/dsp/dsp.h index 7ce58856..813fed4a 100644 --- a/src/dsp/dsp.h +++ b/src/dsp/dsp.h @@ -429,11 +429,11 @@ extern void WebPConvertRGBA32ToUV_C(const uint16_t* rgb, uint8_t* u, uint8_t* v, int width); // utilities for accurate RGB->YUV conversion -extern uint64_t (*WebPSmartYUVUpdateY)(const uint16_t* src, const uint16_t* ref, +extern uint64_t (*WebPSharpYUVUpdateY)(const uint16_t* src, const uint16_t* ref, uint16_t* dst, int len); -extern void (*WebPSmartYUVUpdateRGB)(const int16_t* src, const int16_t* ref, +extern void (*WebPSharpYUVUpdateRGB)(const int16_t* src, const int16_t* ref, int16_t* dst, int len); -extern void (*WebPSmartYUVFilterRow)(const int16_t* A, const int16_t* B, +extern void (*WebPSharpYUVFilterRow)(const int16_t* A, const int16_t* B, int len, const uint16_t* best_y, uint16_t* out); diff --git a/src/dsp/yuv.c b/src/dsp/yuv.c index 797cc0fe..dd7d9ded 100644 --- a/src/dsp/yuv.c +++ b/src/dsp/yuv.c @@ -251,7 +251,7 @@ static uint16_t clip_y(int v) { return (v < 0) ? 0 : (v > MAX_Y) ? MAX_Y : (uint16_t)v; } -static uint64_t SmartYUVUpdateY_C(const uint16_t* ref, const uint16_t* src, +static uint64_t SharpYUVUpdateY_C(const uint16_t* ref, const uint16_t* src, uint16_t* dst, int len) { uint64_t diff = 0; int i; @@ -264,7 +264,7 @@ static uint64_t SmartYUVUpdateY_C(const uint16_t* ref, const uint16_t* src, return diff; } -static void SmartYUVUpdateRGB_C(const int16_t* ref, const int16_t* src, +static void SharpYUVUpdateRGB_C(const int16_t* ref, const int16_t* src, int16_t* dst, int len) { int i; for (i = 0; i < len; ++i) { @@ -273,7 +273,7 @@ static void SmartYUVUpdateRGB_C(const int16_t* ref, const int16_t* src, } } -static void SmartYUVFilterRow_C(const int16_t* A, const int16_t* B, int len, +static void SharpYUVFilterRow_C(const int16_t* A, const int16_t* B, int len, const uint16_t* best_y, uint16_t* out) { int i; for (i = 0; i < len; ++i, ++A, ++B) { @@ -297,18 +297,18 @@ void (*WebPConvertARGBToY)(const uint32_t* argb, uint8_t* y, int width); void (*WebPConvertARGBToUV)(const uint32_t* argb, uint8_t* u, uint8_t* v, int src_width, int do_store); -uint64_t (*WebPSmartYUVUpdateY)(const uint16_t* ref, const uint16_t* src, +uint64_t (*WebPSharpYUVUpdateY)(const uint16_t* ref, const uint16_t* src, uint16_t* dst, int len); -void (*WebPSmartYUVUpdateRGB)(const int16_t* ref, const int16_t* src, +void (*WebPSharpYUVUpdateRGB)(const int16_t* ref, const int16_t* src, int16_t* dst, int len); -void (*WebPSmartYUVFilterRow)(const int16_t* A, const int16_t* B, int len, +void (*WebPSharpYUVFilterRow)(const int16_t* A, const int16_t* B, int len, const uint16_t* best_y, uint16_t* out); static volatile VP8CPUInfo rgba_to_yuv_last_cpuinfo_used = (VP8CPUInfo)&rgba_to_yuv_last_cpuinfo_used; extern void WebPInitConvertARGBToYUVSSE2(void); -extern void WebPInitSmartYUVSSE2(void); +extern void WebPInitSharpYUVSSE2(void); WEBP_TSAN_IGNORE_FUNCTION void WebPInitConvertARGBToYUV(void) { if (rgba_to_yuv_last_cpuinfo_used == VP8GetCPUInfo) return; @@ -321,15 +321,15 @@ WEBP_TSAN_IGNORE_FUNCTION void WebPInitConvertARGBToYUV(void) { WebPConvertRGBA32ToUV = WebPConvertRGBA32ToUV_C; - WebPSmartYUVUpdateY = SmartYUVUpdateY_C; - WebPSmartYUVUpdateRGB = SmartYUVUpdateRGB_C; - WebPSmartYUVFilterRow = SmartYUVFilterRow_C; + WebPSharpYUVUpdateY = SharpYUVUpdateY_C; + WebPSharpYUVUpdateRGB = SharpYUVUpdateRGB_C; + WebPSharpYUVFilterRow = SharpYUVFilterRow_C; if (VP8GetCPUInfo != NULL) { #if defined(WEBP_USE_SSE2) if (VP8GetCPUInfo(kSSE2)) { WebPInitConvertARGBToYUVSSE2(); - WebPInitSmartYUVSSE2(); + WebPInitSharpYUVSSE2(); } #endif // WEBP_USE_SSE2 } diff --git a/src/dsp/yuv_sse2.c b/src/dsp/yuv_sse2.c index 1f610d68..e33c2bba 100644 --- a/src/dsp/yuv_sse2.c +++ b/src/dsp/yuv_sse2.c @@ -743,7 +743,7 @@ static uint16_t clip_y(int v) { return (v < 0) ? 0 : (v > MAX_Y) ? MAX_Y : (uint16_t)v; } -static uint64_t SmartYUVUpdateY_SSE2(const uint16_t* ref, const uint16_t* src, +static uint64_t SharpYUVUpdateY_SSE2(const uint16_t* ref, const uint16_t* src, uint16_t* dst, int len) { uint64_t diff = 0; uint32_t tmp[4]; @@ -777,7 +777,7 @@ static uint64_t SmartYUVUpdateY_SSE2(const uint16_t* ref, const uint16_t* src, return diff; } -static void SmartYUVUpdateRGB_SSE2(const int16_t* ref, const int16_t* src, +static void SharpYUVUpdateRGB_SSE2(const int16_t* ref, const int16_t* src, int16_t* dst, int len) { int i = 0; for (i = 0; i + 8 <= len; i += 8) { @@ -794,7 +794,7 @@ static void SmartYUVUpdateRGB_SSE2(const int16_t* ref, const int16_t* src, } } -static void SmartYUVFilterRow_SSE2(const int16_t* A, const int16_t* B, int len, +static void SharpYUVFilterRow_SSE2(const int16_t* A, const int16_t* B, int len, const uint16_t* best_y, uint16_t* out) { int i; const __m128i kCst8 = _mm_set1_epi16(8); @@ -846,18 +846,18 @@ static void SmartYUVFilterRow_SSE2(const int16_t* A, const int16_t* B, int len, //------------------------------------------------------------------------------ -extern void WebPInitSmartYUVSSE2(void); +extern void WebPInitSharpYUVSSE2(void); -WEBP_TSAN_IGNORE_FUNCTION void WebPInitSmartYUVSSE2(void) { - WebPSmartYUVUpdateY = SmartYUVUpdateY_SSE2; - WebPSmartYUVUpdateRGB = SmartYUVUpdateRGB_SSE2; - WebPSmartYUVFilterRow = SmartYUVFilterRow_SSE2; +WEBP_TSAN_IGNORE_FUNCTION void WebPInitSharpYUVSSE2(void) { + WebPSharpYUVUpdateY = SharpYUVUpdateY_SSE2; + WebPSharpYUVUpdateRGB = SharpYUVUpdateRGB_SSE2; + WebPSharpYUVFilterRow = SharpYUVFilterRow_SSE2; } #else // !WEBP_USE_SSE2 WEBP_DSP_INIT_STUB(WebPInitSamplersSSE2) WEBP_DSP_INIT_STUB(WebPInitConvertARGBToYUVSSE2) -WEBP_DSP_INIT_STUB(WebPInitSmartYUVSSE2) +WEBP_DSP_INIT_STUB(WebPInitSharpYUVSSE2) #endif // WEBP_USE_SSE2 diff --git a/src/enc/picture_csp_enc.c b/src/enc/picture_csp_enc.c index d0303024..e5d1c75a 100644 --- a/src/enc/picture_csp_enc.c +++ b/src/enc/picture_csp_enc.c @@ -153,7 +153,7 @@ static int RGBToV(int r, int g, int b, VP8Random* const rg) { } //------------------------------------------------------------------------------ -// Smart RGB->YUV conversion +// Sharp RGB->YUV conversion static const int kNumIterations = 4; static const int kMinDimensionIterativeConversion = 4; @@ -353,8 +353,8 @@ static void InterpolateTwoRows(const fixed_y_t* const best_y, out1[0] = Filter2(cur_uv[0], prev_uv[0], best_y[0]); out2[0] = Filter2(cur_uv[0], next_uv[0], best_y[w]); - WebPSmartYUVFilterRow(cur_uv, prev_uv, len, best_y + 0 + 1, out1 + 1); - WebPSmartYUVFilterRow(cur_uv, next_uv, len, best_y + w + 1, out2 + 1); + WebPSharpYUVFilterRow(cur_uv, prev_uv, len, best_y + 0 + 1, out1 + 1); + WebPSharpYUVFilterRow(cur_uv, next_uv, len, best_y + w + 1, out2 + 1); // special boundary case for i == w - 1 when w is even if (!(w & 1)) { @@ -527,8 +527,8 @@ static int PreprocessARGB(const uint8_t* r_ptr, UpdateChroma(src1, src2, best_rgb_uv, uv_w); // update two rows of Y and one row of RGB - diff_y_sum += WebPSmartYUVUpdateY(target_y, best_rgb_y, best_y, 2 * w); - WebPSmartYUVUpdateRGB(target_uv, best_rgb_uv, best_uv, 3 * uv_w); + diff_y_sum += WebPSharpYUVUpdateY(target_y, best_rgb_y, best_y, 2 * w); + WebPSharpYUVUpdateRGB(target_uv, best_rgb_uv, best_uv, 3 * uv_w); best_y += 2 * w; best_uv += 3 * uv_w; @@ -1011,9 +1011,13 @@ int WebPPictureARGBToYUVA(WebPPicture* picture, WebPEncCSP colorspace) { return PictureARGBToYUVA(picture, colorspace, 0.f, 0); } -int WebPPictureSmartARGBToYUVA(WebPPicture* picture) { +int WebPPictureSharpARGBToYUVA(WebPPicture* picture) { return PictureARGBToYUVA(picture, WEBP_YUV420, 0.f, 1); } +// for backward compatibility +int WebPPictureSmartARGBToYUVA(WebPPicture* picture) { + return WebPPictureSharpARGBToYUVA(picture); +} //------------------------------------------------------------------------------ // call for YUVA -> ARGB conversion diff --git a/src/enc/webp_enc.c b/src/enc/webp_enc.c index 71e7c2a7..328d07e9 100644 --- a/src/enc/webp_enc.c +++ b/src/enc/webp_enc.c @@ -343,7 +343,7 @@ int WebPEncode(const WebPConfig* config, WebPPicture* pic) { if (pic->use_argb || pic->y == NULL || pic->u == NULL || pic->v == NULL) { // Make sure we have YUVA samples. if (config->preprocessing & 4) { - if (!WebPPictureSmartARGBToYUVA(pic)) { + if (!WebPPictureSharpARGBToYUVA(pic)) { return 0; } } else { diff --git a/src/webp/encode.h b/src/webp/encode.h index c155f4e7..5b6337ce 100644 --- a/src/webp/encode.h +++ b/src/webp/encode.h @@ -20,7 +20,7 @@ extern "C" { #endif -#define WEBP_ENCODER_ABI_VERSION 0x020c // MAJOR(8b) + MINOR(8b) +#define WEBP_ENCODER_ABI_VERSION 0x020d // MAJOR(8b) + MINOR(8b) // Note: forward declaring enumerations is not allowed in (strict) C and C++, // the types are left here for reference. @@ -484,11 +484,13 @@ WEBP_EXTERN(int) WebPPictureARGBToYUVA(WebPPicture* picture, WEBP_EXTERN(int) WebPPictureARGBToYUVADithered( WebPPicture* picture, WebPEncCSP colorspace, float dithering); -// Performs 'smart' RGBA->YUVA420 downsampling and colorspace conversion. +// Performs 'sharp' RGBA->YUVA420 downsampling and colorspace conversion. // Downsampling is handled with extra care in case of color clipping. This // method is roughly 2x slower than WebPPictureARGBToYUVA() but produces better -// YUV representation. +// and sharper YUV representation. // Returns false in case of error. +WEBP_EXTERN(int) WebPPictureSharpARGBToYUVA(WebPPicture* picture); +// kept for backward compatibility: WEBP_EXTERN(int) WebPPictureSmartARGBToYUVA(WebPPicture* picture); // Converts picture->yuv to picture->argb and sets picture->use_argb to true.