WEBP_REDUCE_CSP: restrict colorspace support
only supported ones are: RGBA/BGRA/rgbA/bgrA (decoder)
as well as: WebPPictureImportRGB/RGBX/RGBA (encoder).
(note: extras/get_disto is affected too)
Change-Id: If6c4f95054ca15759c4e289fb3b4c352b3521c2c
(cherry picked from commit 6de20df02c
)
This commit is contained in:
parent
a289d8e774
commit
f66955de5f
@ -322,6 +322,7 @@ int main(int argc, const char *argv[]) {
|
|||||||
fprintf(stderr, "Can only compute the difference map in ARGB format.\n");
|
fprintf(stderr, "Can only compute the difference map in ARGB format.\n");
|
||||||
goto End;
|
goto End;
|
||||||
}
|
}
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
data_size = WebPEncodeLosslessBGRA((const uint8_t*)pic1.argb,
|
data_size = WebPEncodeLosslessBGRA((const uint8_t*)pic1.argb,
|
||||||
pic1.width, pic1.height,
|
pic1.width, pic1.height,
|
||||||
pic1.argb_stride * 4,
|
pic1.argb_stride * 4,
|
||||||
@ -333,6 +334,12 @@ int main(int argc, const char *argv[]) {
|
|||||||
ret = ImgIoUtilWriteFile(output, data, data_size) ? 0 : 1;
|
ret = ImgIoUtilWriteFile(output, data, data_size) ? 0 : 1;
|
||||||
WebPFree(data);
|
WebPFree(data);
|
||||||
if (ret) goto End;
|
if (ret) goto End;
|
||||||
|
#else
|
||||||
|
(void)data;
|
||||||
|
(void)data_size;
|
||||||
|
fprintf(stderr, "Cannot save the difference map. Please recompile "
|
||||||
|
"without the WEBP_REDUCE_CSP flag.\n");
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
}
|
}
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
|
@ -94,13 +94,37 @@ static void FUNC_NAME(const uint8_t* top_y, const uint8_t* bottom_y, \
|
|||||||
|
|
||||||
// All variants implemented.
|
// All variants implemented.
|
||||||
#if !WEBP_NEON_OMIT_C_CODE
|
#if !WEBP_NEON_OMIT_C_CODE
|
||||||
UPSAMPLE_FUNC(UpsampleRgbLinePair_C, VP8YuvToRgb, 3)
|
|
||||||
UPSAMPLE_FUNC(UpsampleBgrLinePair_C, VP8YuvToBgr, 3)
|
|
||||||
UPSAMPLE_FUNC(UpsampleRgbaLinePair_C, VP8YuvToRgba, 4)
|
UPSAMPLE_FUNC(UpsampleRgbaLinePair_C, VP8YuvToRgba, 4)
|
||||||
UPSAMPLE_FUNC(UpsampleBgraLinePair_C, VP8YuvToBgra, 4)
|
UPSAMPLE_FUNC(UpsampleBgraLinePair_C, VP8YuvToBgra, 4)
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
UPSAMPLE_FUNC(UpsampleArgbLinePair_C, VP8YuvToArgb, 4)
|
UPSAMPLE_FUNC(UpsampleArgbLinePair_C, VP8YuvToArgb, 4)
|
||||||
|
UPSAMPLE_FUNC(UpsampleRgbLinePair_C, VP8YuvToRgb, 3)
|
||||||
|
UPSAMPLE_FUNC(UpsampleBgrLinePair_C, VP8YuvToBgr, 3)
|
||||||
UPSAMPLE_FUNC(UpsampleRgba4444LinePair_C, VP8YuvToRgba4444, 2)
|
UPSAMPLE_FUNC(UpsampleRgba4444LinePair_C, VP8YuvToRgba4444, 2)
|
||||||
UPSAMPLE_FUNC(UpsampleRgb565LinePair_C, VP8YuvToRgb565, 2)
|
UPSAMPLE_FUNC(UpsampleRgb565LinePair_C, VP8YuvToRgb565, 2)
|
||||||
|
#else
|
||||||
|
static void EmptyUpsampleFunc(const uint8_t* top_y, const uint8_t* bottom_y,
|
||||||
|
const uint8_t* top_u, const uint8_t* top_v,
|
||||||
|
const uint8_t* cur_u, const uint8_t* cur_v,
|
||||||
|
uint8_t* top_dst, uint8_t* bottom_dst, int len) {
|
||||||
|
(void)top_y;
|
||||||
|
(void)bottom_y;
|
||||||
|
(void)top_u;
|
||||||
|
(void)top_v;
|
||||||
|
(void)cur_u;
|
||||||
|
(void)cur_v;
|
||||||
|
(void)top_dst;
|
||||||
|
(void)bottom_dst;
|
||||||
|
(void)len;
|
||||||
|
assert(0); // COLORSPACE SUPPORT NOT COMPILED
|
||||||
|
}
|
||||||
|
#define UpsampleArgbLinePair_C EmptyUpsampleFunc
|
||||||
|
#define UpsampleRgbLinePair_C EmptyUpsampleFunc
|
||||||
|
#define UpsampleBgrLinePair_C EmptyUpsampleFunc
|
||||||
|
#define UpsampleRgba4444LinePair_C EmptyUpsampleFunc
|
||||||
|
#define UpsampleRgb565LinePair_C EmptyUpsampleFunc
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef LOAD_UV
|
#undef LOAD_UV
|
||||||
@ -162,13 +186,30 @@ void FUNC_NAME(const uint8_t* y, const uint8_t* u, const uint8_t* v, \
|
|||||||
for (i = 0; i < len; ++i) FUNC(y[i], u[i], v[i], &dst[i * (XSTEP)]); \
|
for (i = 0; i < len; ++i) FUNC(y[i], u[i], v[i], &dst[i * (XSTEP)]); \
|
||||||
}
|
}
|
||||||
|
|
||||||
YUV444_FUNC(WebPYuv444ToRgb_C, VP8YuvToRgb, 3)
|
|
||||||
YUV444_FUNC(WebPYuv444ToBgr_C, VP8YuvToBgr, 3)
|
|
||||||
YUV444_FUNC(WebPYuv444ToRgba_C, VP8YuvToRgba, 4)
|
YUV444_FUNC(WebPYuv444ToRgba_C, VP8YuvToRgba, 4)
|
||||||
YUV444_FUNC(WebPYuv444ToBgra_C, VP8YuvToBgra, 4)
|
YUV444_FUNC(WebPYuv444ToBgra_C, VP8YuvToBgra, 4)
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
YUV444_FUNC(WebPYuv444ToRgb_C, VP8YuvToRgb, 3)
|
||||||
|
YUV444_FUNC(WebPYuv444ToBgr_C, VP8YuvToBgr, 3)
|
||||||
YUV444_FUNC(WebPYuv444ToArgb_C, VP8YuvToArgb, 4)
|
YUV444_FUNC(WebPYuv444ToArgb_C, VP8YuvToArgb, 4)
|
||||||
YUV444_FUNC(WebPYuv444ToRgba4444_C, VP8YuvToRgba4444, 2)
|
YUV444_FUNC(WebPYuv444ToRgba4444_C, VP8YuvToRgba4444, 2)
|
||||||
YUV444_FUNC(WebPYuv444ToRgb565_C, VP8YuvToRgb565, 2)
|
YUV444_FUNC(WebPYuv444ToRgb565_C, VP8YuvToRgb565, 2)
|
||||||
|
#else
|
||||||
|
static void EmptyYuv444Func(const uint8_t* y,
|
||||||
|
const uint8_t* u, const uint8_t* v,
|
||||||
|
uint8_t* dst, int len) {
|
||||||
|
(void)y;
|
||||||
|
(void)u;
|
||||||
|
(void)v;
|
||||||
|
(void)dst;
|
||||||
|
(void)len;
|
||||||
|
}
|
||||||
|
#define WebPYuv444ToRgb_C EmptyYuv444Func
|
||||||
|
#define WebPYuv444ToBgr_C EmptyYuv444Func
|
||||||
|
#define WebPYuv444ToArgb_C EmptyYuv444Func
|
||||||
|
#define WebPYuv444ToRgba4444_C EmptyYuv444Func
|
||||||
|
#define WebPYuv444ToRgb565_C EmptyYuv444Func
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
#undef YUV444_FUNC
|
#undef YUV444_FUNC
|
||||||
|
|
||||||
@ -183,10 +224,10 @@ static volatile VP8CPUInfo upsampling_last_cpuinfo_used1 =
|
|||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitYUV444Converters(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitYUV444Converters(void) {
|
||||||
if (upsampling_last_cpuinfo_used1 == VP8GetCPUInfo) return;
|
if (upsampling_last_cpuinfo_used1 == VP8GetCPUInfo) return;
|
||||||
|
|
||||||
WebPYUV444Converters[MODE_RGB] = WebPYuv444ToRgb_C;
|
|
||||||
WebPYUV444Converters[MODE_RGBA] = WebPYuv444ToRgba_C;
|
WebPYUV444Converters[MODE_RGBA] = WebPYuv444ToRgba_C;
|
||||||
WebPYUV444Converters[MODE_BGR] = WebPYuv444ToBgr_C;
|
|
||||||
WebPYUV444Converters[MODE_BGRA] = WebPYuv444ToBgra_C;
|
WebPYUV444Converters[MODE_BGRA] = WebPYuv444ToBgra_C;
|
||||||
|
WebPYUV444Converters[MODE_RGB] = WebPYuv444ToRgb_C;
|
||||||
|
WebPYUV444Converters[MODE_BGR] = WebPYuv444ToBgr_C;
|
||||||
WebPYUV444Converters[MODE_ARGB] = WebPYuv444ToArgb_C;
|
WebPYUV444Converters[MODE_ARGB] = WebPYuv444ToArgb_C;
|
||||||
WebPYUV444Converters[MODE_RGBA_4444] = WebPYuv444ToRgba4444_C;
|
WebPYUV444Converters[MODE_RGBA_4444] = WebPYuv444ToRgba4444_C;
|
||||||
WebPYUV444Converters[MODE_RGB_565] = WebPYuv444ToRgb565_C;
|
WebPYUV444Converters[MODE_RGB_565] = WebPYuv444ToRgb565_C;
|
||||||
@ -226,15 +267,15 @@ WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplers(void) {
|
|||||||
|
|
||||||
#ifdef FANCY_UPSAMPLING
|
#ifdef FANCY_UPSAMPLING
|
||||||
#if !WEBP_NEON_OMIT_C_CODE
|
#if !WEBP_NEON_OMIT_C_CODE
|
||||||
WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair_C;
|
|
||||||
WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair_C;
|
WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair_C;
|
||||||
WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair_C;
|
|
||||||
WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair_C;
|
WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair_C;
|
||||||
|
WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair_C;
|
||||||
|
WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair_C;
|
||||||
|
WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair_C;
|
||||||
|
WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair_C;
|
||||||
WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair_C;
|
WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair_C;
|
||||||
WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair_C;
|
WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair_C;
|
||||||
WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair_C;
|
WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair_C;
|
||||||
WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair_C;
|
|
||||||
WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair_C;
|
|
||||||
WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair_C;
|
WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair_C;
|
||||||
WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair_C;
|
WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair_C;
|
||||||
#endif
|
#endif
|
||||||
@ -265,15 +306,15 @@ WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplers(void) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
assert(WebPUpsamplers[MODE_RGB] != NULL);
|
|
||||||
assert(WebPUpsamplers[MODE_RGBA] != NULL);
|
assert(WebPUpsamplers[MODE_RGBA] != NULL);
|
||||||
assert(WebPUpsamplers[MODE_BGR] != NULL);
|
|
||||||
assert(WebPUpsamplers[MODE_BGRA] != NULL);
|
assert(WebPUpsamplers[MODE_BGRA] != NULL);
|
||||||
|
assert(WebPUpsamplers[MODE_rgbA] != NULL);
|
||||||
|
assert(WebPUpsamplers[MODE_bgrA] != NULL);
|
||||||
|
assert(WebPUpsamplers[MODE_RGB] != NULL);
|
||||||
|
assert(WebPUpsamplers[MODE_BGR] != NULL);
|
||||||
assert(WebPUpsamplers[MODE_ARGB] != NULL);
|
assert(WebPUpsamplers[MODE_ARGB] != NULL);
|
||||||
assert(WebPUpsamplers[MODE_RGBA_4444] != NULL);
|
assert(WebPUpsamplers[MODE_RGBA_4444] != NULL);
|
||||||
assert(WebPUpsamplers[MODE_RGB_565] != NULL);
|
assert(WebPUpsamplers[MODE_RGB_565] != NULL);
|
||||||
assert(WebPUpsamplers[MODE_rgbA] != NULL);
|
|
||||||
assert(WebPUpsamplers[MODE_bgrA] != NULL);
|
|
||||||
assert(WebPUpsamplers[MODE_Argb] != NULL);
|
assert(WebPUpsamplers[MODE_Argb] != NULL);
|
||||||
assert(WebPUpsamplers[MODE_rgbA_4444] != NULL);
|
assert(WebPUpsamplers[MODE_rgbA_4444] != NULL);
|
||||||
|
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
); \
|
); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
static WEBP_INLINE void YuvToRgb(int y, int u, int v, uint8_t* const rgb) {
|
static WEBP_INLINE void YuvToRgb(int y, int u, int v, uint8_t* const rgb) {
|
||||||
int r, g, b;
|
int r, g, b;
|
||||||
YUV_TO_RGB(y, u, v, r, g, b);
|
YUV_TO_RGB(y, u, v, r, g, b);
|
||||||
@ -91,10 +92,12 @@ static WEBP_INLINE void YuvToRgba4444(int y, int u, int v,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Alpha handling variants
|
// Alpha handling variants
|
||||||
|
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
static WEBP_INLINE void YuvToArgb(uint8_t y, uint8_t u, uint8_t v,
|
static WEBP_INLINE void YuvToArgb(uint8_t y, uint8_t u, uint8_t v,
|
||||||
uint8_t* const argb) {
|
uint8_t* const argb) {
|
||||||
int r, g, b;
|
int r, g, b;
|
||||||
@ -104,6 +107,7 @@ static WEBP_INLINE void YuvToArgb(uint8_t y, uint8_t u, uint8_t v,
|
|||||||
argb[2] = g;
|
argb[2] = g;
|
||||||
argb[3] = b;
|
argb[3] = b;
|
||||||
}
|
}
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
static WEBP_INLINE void YuvToBgra(uint8_t y, uint8_t u, uint8_t v,
|
static WEBP_INLINE void YuvToBgra(uint8_t y, uint8_t u, uint8_t v,
|
||||||
uint8_t* const bgra) {
|
uint8_t* const bgra) {
|
||||||
int r, g, b;
|
int r, g, b;
|
||||||
@ -197,13 +201,15 @@ static void FUNC_NAME(const uint8_t* top_y, const uint8_t* bottom_y, \
|
|||||||
}
|
}
|
||||||
|
|
||||||
// All variants implemented.
|
// All variants implemented.
|
||||||
UPSAMPLE_FUNC(UpsampleRgbLinePair, YuvToRgb, 3)
|
|
||||||
UPSAMPLE_FUNC(UpsampleBgrLinePair, YuvToBgr, 3)
|
|
||||||
UPSAMPLE_FUNC(UpsampleRgbaLinePair, YuvToRgba, 4)
|
UPSAMPLE_FUNC(UpsampleRgbaLinePair, YuvToRgba, 4)
|
||||||
UPSAMPLE_FUNC(UpsampleBgraLinePair, YuvToBgra, 4)
|
UPSAMPLE_FUNC(UpsampleBgraLinePair, YuvToBgra, 4)
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
UPSAMPLE_FUNC(UpsampleRgbLinePair, YuvToRgb, 3)
|
||||||
|
UPSAMPLE_FUNC(UpsampleBgrLinePair, YuvToBgr, 3)
|
||||||
UPSAMPLE_FUNC(UpsampleArgbLinePair, YuvToArgb, 4)
|
UPSAMPLE_FUNC(UpsampleArgbLinePair, YuvToArgb, 4)
|
||||||
UPSAMPLE_FUNC(UpsampleRgba4444LinePair, YuvToRgba4444, 2)
|
UPSAMPLE_FUNC(UpsampleRgba4444LinePair, YuvToRgba4444, 2)
|
||||||
UPSAMPLE_FUNC(UpsampleRgb565LinePair, YuvToRgb565, 2)
|
UPSAMPLE_FUNC(UpsampleRgb565LinePair, YuvToRgb565, 2)
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
#undef LOAD_UV
|
#undef LOAD_UV
|
||||||
#undef UPSAMPLE_FUNC
|
#undef UPSAMPLE_FUNC
|
||||||
@ -214,17 +220,19 @@ UPSAMPLE_FUNC(UpsampleRgb565LinePair, YuvToRgb565, 2)
|
|||||||
extern void WebPInitUpsamplersMIPSdspR2(void);
|
extern void WebPInitUpsamplersMIPSdspR2(void);
|
||||||
|
|
||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplersMIPSdspR2(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplersMIPSdspR2(void) {
|
||||||
WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair;
|
|
||||||
WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair;
|
WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair;
|
||||||
WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair;
|
|
||||||
WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair;
|
WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair;
|
||||||
|
WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair;
|
||||||
|
WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair;
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair;
|
||||||
|
WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair;
|
||||||
WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair;
|
WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair;
|
||||||
WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair;
|
WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair;
|
||||||
WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair;
|
WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair;
|
||||||
WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair;
|
|
||||||
WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair;
|
|
||||||
WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair;
|
WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair;
|
||||||
WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair;
|
WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair;
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FANCY_UPSAMPLING
|
#endif // FANCY_UPSAMPLING
|
||||||
@ -239,13 +247,15 @@ static void FUNC_NAME(const uint8_t* y, const uint8_t* u, const uint8_t* v, \
|
|||||||
for (i = 0; i < len; ++i) FUNC(y[i], u[i], v[i], &dst[i * XSTEP]); \
|
for (i = 0; i < len; ++i) FUNC(y[i], u[i], v[i], &dst[i * XSTEP]); \
|
||||||
}
|
}
|
||||||
|
|
||||||
YUV444_FUNC(Yuv444ToRgb, YuvToRgb, 3)
|
|
||||||
YUV444_FUNC(Yuv444ToBgr, YuvToBgr, 3)
|
|
||||||
YUV444_FUNC(Yuv444ToRgba, YuvToRgba, 4)
|
YUV444_FUNC(Yuv444ToRgba, YuvToRgba, 4)
|
||||||
YUV444_FUNC(Yuv444ToBgra, YuvToBgra, 4)
|
YUV444_FUNC(Yuv444ToBgra, YuvToBgra, 4)
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
YUV444_FUNC(Yuv444ToRgb, YuvToRgb, 3)
|
||||||
|
YUV444_FUNC(Yuv444ToBgr, YuvToBgr, 3)
|
||||||
YUV444_FUNC(Yuv444ToArgb, YuvToArgb, 4)
|
YUV444_FUNC(Yuv444ToArgb, YuvToArgb, 4)
|
||||||
YUV444_FUNC(Yuv444ToRgba4444, YuvToRgba4444, 2)
|
YUV444_FUNC(Yuv444ToRgba4444, YuvToRgba4444, 2)
|
||||||
YUV444_FUNC(Yuv444ToRgb565, YuvToRgb565, 2)
|
YUV444_FUNC(Yuv444ToRgb565, YuvToRgb565, 2)
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
#undef YUV444_FUNC
|
#undef YUV444_FUNC
|
||||||
|
|
||||||
@ -255,17 +265,19 @@ YUV444_FUNC(Yuv444ToRgb565, YuvToRgb565, 2)
|
|||||||
extern void WebPInitYUV444ConvertersMIPSdspR2(void);
|
extern void WebPInitYUV444ConvertersMIPSdspR2(void);
|
||||||
|
|
||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitYUV444ConvertersMIPSdspR2(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitYUV444ConvertersMIPSdspR2(void) {
|
||||||
WebPYUV444Converters[MODE_RGB] = Yuv444ToRgb;
|
|
||||||
WebPYUV444Converters[MODE_RGBA] = Yuv444ToRgba;
|
WebPYUV444Converters[MODE_RGBA] = Yuv444ToRgba;
|
||||||
WebPYUV444Converters[MODE_BGR] = Yuv444ToBgr;
|
|
||||||
WebPYUV444Converters[MODE_BGRA] = Yuv444ToBgra;
|
WebPYUV444Converters[MODE_BGRA] = Yuv444ToBgra;
|
||||||
|
WebPYUV444Converters[MODE_rgbA] = Yuv444ToRgba;
|
||||||
|
WebPYUV444Converters[MODE_bgrA] = Yuv444ToBgra;
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
WebPYUV444Converters[MODE_RGB] = Yuv444ToRgb;
|
||||||
|
WebPYUV444Converters[MODE_BGR] = Yuv444ToBgr;
|
||||||
WebPYUV444Converters[MODE_ARGB] = Yuv444ToArgb;
|
WebPYUV444Converters[MODE_ARGB] = Yuv444ToArgb;
|
||||||
WebPYUV444Converters[MODE_RGBA_4444] = Yuv444ToRgba4444;
|
WebPYUV444Converters[MODE_RGBA_4444] = Yuv444ToRgba4444;
|
||||||
WebPYUV444Converters[MODE_RGB_565] = Yuv444ToRgb565;
|
WebPYUV444Converters[MODE_RGB_565] = Yuv444ToRgb565;
|
||||||
WebPYUV444Converters[MODE_rgbA] = Yuv444ToRgba;
|
|
||||||
WebPYUV444Converters[MODE_bgrA] = Yuv444ToBgra;
|
|
||||||
WebPYUV444Converters[MODE_Argb] = Yuv444ToArgb;
|
WebPYUV444Converters[MODE_Argb] = Yuv444ToArgb;
|
||||||
WebPYUV444Converters[MODE_rgbA_4444] = Yuv444ToRgba4444;
|
WebPYUV444Converters[MODE_rgbA_4444] = Yuv444ToRgba4444;
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // !WEBP_USE_MIPS_DSP_R2
|
#else // !WEBP_USE_MIPS_DSP_R2
|
||||||
|
@ -640,13 +640,15 @@ static void FUNC_NAME(const uint8_t* top_y, const uint8_t* bot_y, \
|
|||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
UPSAMPLE_FUNC(UpsampleRgbLinePair, YuvToRgb, 3)
|
|
||||||
UPSAMPLE_FUNC(UpsampleBgrLinePair, YuvToBgr, 3)
|
|
||||||
UPSAMPLE_FUNC(UpsampleRgbaLinePair, YuvToRgba, 4)
|
UPSAMPLE_FUNC(UpsampleRgbaLinePair, YuvToRgba, 4)
|
||||||
UPSAMPLE_FUNC(UpsampleBgraLinePair, YuvToBgra, 4)
|
UPSAMPLE_FUNC(UpsampleBgraLinePair, YuvToBgra, 4)
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
UPSAMPLE_FUNC(UpsampleRgbLinePair, YuvToRgb, 3)
|
||||||
|
UPSAMPLE_FUNC(UpsampleBgrLinePair, YuvToBgr, 3)
|
||||||
UPSAMPLE_FUNC(UpsampleArgbLinePair, YuvToArgb, 4)
|
UPSAMPLE_FUNC(UpsampleArgbLinePair, YuvToArgb, 4)
|
||||||
UPSAMPLE_FUNC(UpsampleRgba4444LinePair, YuvToRgba4444, 2)
|
UPSAMPLE_FUNC(UpsampleRgba4444LinePair, YuvToRgba4444, 2)
|
||||||
UPSAMPLE_FUNC(UpsampleRgb565LinePair, YuvToRgb565, 2)
|
UPSAMPLE_FUNC(UpsampleRgb565LinePair, YuvToRgb565, 2)
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Entry point
|
// Entry point
|
||||||
@ -656,17 +658,19 @@ extern WebPUpsampleLinePairFunc WebPUpsamplers[/* MODE_LAST */];
|
|||||||
extern void WebPInitUpsamplersMSA(void);
|
extern void WebPInitUpsamplersMSA(void);
|
||||||
|
|
||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplersMSA(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplersMSA(void) {
|
||||||
WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair;
|
|
||||||
WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair;
|
WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair;
|
||||||
WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair;
|
|
||||||
WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair;
|
WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair;
|
||||||
WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair;
|
|
||||||
WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair;
|
WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair;
|
||||||
WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair;
|
WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair;
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair;
|
||||||
|
WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair;
|
||||||
|
WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair;
|
||||||
WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair;
|
WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair;
|
||||||
WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair;
|
WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair;
|
||||||
WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair;
|
WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair;
|
||||||
WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair;
|
WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair;
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FANCY_UPSAMPLING
|
#endif // FANCY_UPSAMPLING
|
||||||
|
@ -243,13 +243,15 @@ static void FUNC_NAME(const uint8_t *top_y, const uint8_t *bottom_y, \
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NEON variants of the fancy upsampler.
|
// NEON variants of the fancy upsampler.
|
||||||
NEON_UPSAMPLE_FUNC(UpsampleRgbLinePair_NEON, Rgb, 3)
|
|
||||||
NEON_UPSAMPLE_FUNC(UpsampleBgrLinePair_NEON, Bgr, 3)
|
|
||||||
NEON_UPSAMPLE_FUNC(UpsampleRgbaLinePair_NEON, Rgba, 4)
|
NEON_UPSAMPLE_FUNC(UpsampleRgbaLinePair_NEON, Rgba, 4)
|
||||||
NEON_UPSAMPLE_FUNC(UpsampleBgraLinePair_NEON, Bgra, 4)
|
NEON_UPSAMPLE_FUNC(UpsampleBgraLinePair_NEON, Bgra, 4)
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
NEON_UPSAMPLE_FUNC(UpsampleRgbLinePair_NEON, Rgb, 3)
|
||||||
|
NEON_UPSAMPLE_FUNC(UpsampleBgrLinePair_NEON, Bgr, 3)
|
||||||
NEON_UPSAMPLE_FUNC(UpsampleArgbLinePair_NEON, Argb, 4)
|
NEON_UPSAMPLE_FUNC(UpsampleArgbLinePair_NEON, Argb, 4)
|
||||||
NEON_UPSAMPLE_FUNC(UpsampleRgba4444LinePair_NEON, Rgba4444, 2)
|
NEON_UPSAMPLE_FUNC(UpsampleRgba4444LinePair_NEON, Rgba4444, 2)
|
||||||
NEON_UPSAMPLE_FUNC(UpsampleRgb565LinePair_NEON, Rgb565, 2)
|
NEON_UPSAMPLE_FUNC(UpsampleRgb565LinePair_NEON, Rgb565, 2)
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Entry point
|
// Entry point
|
||||||
@ -259,17 +261,19 @@ extern WebPUpsampleLinePairFunc WebPUpsamplers[/* MODE_LAST */];
|
|||||||
extern void WebPInitUpsamplersNEON(void);
|
extern void WebPInitUpsamplersNEON(void);
|
||||||
|
|
||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplersNEON(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplersNEON(void) {
|
||||||
WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair_NEON;
|
|
||||||
WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair_NEON;
|
WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair_NEON;
|
||||||
WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair_NEON;
|
|
||||||
WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair_NEON;
|
WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair_NEON;
|
||||||
WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair_NEON;
|
|
||||||
WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair_NEON;
|
WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair_NEON;
|
||||||
WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair_NEON;
|
WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair_NEON;
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair_NEON;
|
||||||
|
WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair_NEON;
|
||||||
|
WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair_NEON;
|
||||||
WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair_NEON;
|
WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair_NEON;
|
||||||
WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair_NEON;
|
WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair_NEON;
|
||||||
WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair_NEON;
|
WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair_NEON;
|
||||||
WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair_NEON;
|
WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair_NEON;
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FANCY_UPSAMPLING
|
#endif // FANCY_UPSAMPLING
|
||||||
|
@ -169,13 +169,16 @@ static void FUNC_NAME(const uint8_t* top_y, const uint8_t* bottom_y, \
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SSE2 variants of the fancy upsampler.
|
// SSE2 variants of the fancy upsampler.
|
||||||
SSE2_UPSAMPLE_FUNC(UpsampleRgbLinePair_SSE2, VP8YuvToRgb, 3)
|
|
||||||
SSE2_UPSAMPLE_FUNC(UpsampleBgrLinePair_SSE2, VP8YuvToBgr, 3)
|
|
||||||
SSE2_UPSAMPLE_FUNC(UpsampleRgbaLinePair_SSE2, VP8YuvToRgba, 4)
|
SSE2_UPSAMPLE_FUNC(UpsampleRgbaLinePair_SSE2, VP8YuvToRgba, 4)
|
||||||
SSE2_UPSAMPLE_FUNC(UpsampleBgraLinePair_SSE2, VP8YuvToBgra, 4)
|
SSE2_UPSAMPLE_FUNC(UpsampleBgraLinePair_SSE2, VP8YuvToBgra, 4)
|
||||||
|
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
SSE2_UPSAMPLE_FUNC(UpsampleRgbLinePair_SSE2, VP8YuvToRgb, 3)
|
||||||
|
SSE2_UPSAMPLE_FUNC(UpsampleBgrLinePair_SSE2, VP8YuvToBgr, 3)
|
||||||
SSE2_UPSAMPLE_FUNC(UpsampleArgbLinePair_SSE2, VP8YuvToArgb, 4)
|
SSE2_UPSAMPLE_FUNC(UpsampleArgbLinePair_SSE2, VP8YuvToArgb, 4)
|
||||||
SSE2_UPSAMPLE_FUNC(UpsampleRgba4444LinePair_SSE2, VP8YuvToRgba4444, 2)
|
SSE2_UPSAMPLE_FUNC(UpsampleRgba4444LinePair_SSE2, VP8YuvToRgba4444, 2)
|
||||||
SSE2_UPSAMPLE_FUNC(UpsampleRgb565LinePair_SSE2, VP8YuvToRgb565, 2)
|
SSE2_UPSAMPLE_FUNC(UpsampleRgb565LinePair_SSE2, VP8YuvToRgb565, 2)
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
#undef GET_M
|
#undef GET_M
|
||||||
#undef PACK_AND_STORE
|
#undef PACK_AND_STORE
|
||||||
@ -193,17 +196,19 @@ extern WebPUpsampleLinePairFunc WebPUpsamplers[/* MODE_LAST */];
|
|||||||
extern void WebPInitUpsamplersSSE2(void);
|
extern void WebPInitUpsamplersSSE2(void);
|
||||||
|
|
||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplersSSE2(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitUpsamplersSSE2(void) {
|
||||||
WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair_SSE2;
|
|
||||||
WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair_SSE2;
|
WebPUpsamplers[MODE_RGBA] = UpsampleRgbaLinePair_SSE2;
|
||||||
WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair_SSE2;
|
|
||||||
WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair_SSE2;
|
WebPUpsamplers[MODE_BGRA] = UpsampleBgraLinePair_SSE2;
|
||||||
WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair_SSE2;
|
|
||||||
WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair_SSE2;
|
WebPUpsamplers[MODE_rgbA] = UpsampleRgbaLinePair_SSE2;
|
||||||
WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair_SSE2;
|
WebPUpsamplers[MODE_bgrA] = UpsampleBgraLinePair_SSE2;
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
WebPUpsamplers[MODE_RGB] = UpsampleRgbLinePair_SSE2;
|
||||||
|
WebPUpsamplers[MODE_BGR] = UpsampleBgrLinePair_SSE2;
|
||||||
|
WebPUpsamplers[MODE_ARGB] = UpsampleArgbLinePair_SSE2;
|
||||||
WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair_SSE2;
|
WebPUpsamplers[MODE_Argb] = UpsampleArgbLinePair_SSE2;
|
||||||
WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair_SSE2;
|
WebPUpsamplers[MODE_RGB_565] = UpsampleRgb565LinePair_SSE2;
|
||||||
WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair_SSE2;
|
WebPUpsamplers[MODE_RGBA_4444] = UpsampleRgba4444LinePair_SSE2;
|
||||||
WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair_SSE2;
|
WebPUpsamplers[MODE_rgbA_4444] = UpsampleRgba4444LinePair_SSE2;
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FANCY_UPSAMPLING
|
#endif // FANCY_UPSAMPLING
|
||||||
@ -230,25 +235,29 @@ static void FUNC_NAME(const uint8_t* y, const uint8_t* u, const uint8_t* v, \
|
|||||||
|
|
||||||
YUV444_FUNC(Yuv444ToRgba_SSE2, VP8YuvToRgba32_SSE2, WebPYuv444ToRgba_C, 4);
|
YUV444_FUNC(Yuv444ToRgba_SSE2, VP8YuvToRgba32_SSE2, WebPYuv444ToRgba_C, 4);
|
||||||
YUV444_FUNC(Yuv444ToBgra_SSE2, VP8YuvToBgra32_SSE2, WebPYuv444ToBgra_C, 4);
|
YUV444_FUNC(Yuv444ToBgra_SSE2, VP8YuvToBgra32_SSE2, WebPYuv444ToBgra_C, 4);
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
YUV444_FUNC(Yuv444ToRgb_SSE2, VP8YuvToRgb32_SSE2, WebPYuv444ToRgb_C, 3);
|
YUV444_FUNC(Yuv444ToRgb_SSE2, VP8YuvToRgb32_SSE2, WebPYuv444ToRgb_C, 3);
|
||||||
YUV444_FUNC(Yuv444ToBgr_SSE2, VP8YuvToBgr32_SSE2, WebPYuv444ToBgr_C, 3);
|
YUV444_FUNC(Yuv444ToBgr_SSE2, VP8YuvToBgr32_SSE2, WebPYuv444ToBgr_C, 3);
|
||||||
YUV444_FUNC(Yuv444ToArgb_SSE2, VP8YuvToArgb32_SSE2, WebPYuv444ToArgb_C, 4)
|
YUV444_FUNC(Yuv444ToArgb_SSE2, VP8YuvToArgb32_SSE2, WebPYuv444ToArgb_C, 4)
|
||||||
YUV444_FUNC(Yuv444ToRgba4444_SSE2, VP8YuvToRgba444432_SSE2, \
|
YUV444_FUNC(Yuv444ToRgba4444_SSE2, VP8YuvToRgba444432_SSE2, \
|
||||||
WebPYuv444ToRgba4444_C, 2)
|
WebPYuv444ToRgba4444_C, 2)
|
||||||
YUV444_FUNC(Yuv444ToRgb565_SSE2, VP8YuvToRgb56532_SSE2, WebPYuv444ToRgb565_C, 2)
|
YUV444_FUNC(Yuv444ToRgb565_SSE2, VP8YuvToRgb56532_SSE2, WebPYuv444ToRgb565_C, 2)
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitYUV444ConvertersSSE2(void) {
|
WEBP_TSAN_IGNORE_FUNCTION void WebPInitYUV444ConvertersSSE2(void) {
|
||||||
WebPYUV444Converters[MODE_RGBA] = Yuv444ToRgba_SSE2;
|
WebPYUV444Converters[MODE_RGBA] = Yuv444ToRgba_SSE2;
|
||||||
WebPYUV444Converters[MODE_BGRA] = Yuv444ToBgra_SSE2;
|
WebPYUV444Converters[MODE_BGRA] = Yuv444ToBgra_SSE2;
|
||||||
|
WebPYUV444Converters[MODE_rgbA] = Yuv444ToRgba_SSE2;
|
||||||
|
WebPYUV444Converters[MODE_bgrA] = Yuv444ToBgra_SSE2;
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
WebPYUV444Converters[MODE_RGB] = Yuv444ToRgb_SSE2;
|
WebPYUV444Converters[MODE_RGB] = Yuv444ToRgb_SSE2;
|
||||||
WebPYUV444Converters[MODE_BGR] = Yuv444ToBgr_SSE2;
|
WebPYUV444Converters[MODE_BGR] = Yuv444ToBgr_SSE2;
|
||||||
WebPYUV444Converters[MODE_ARGB] = Yuv444ToArgb_SSE2;
|
WebPYUV444Converters[MODE_ARGB] = Yuv444ToArgb_SSE2;
|
||||||
WebPYUV444Converters[MODE_RGBA_4444] = Yuv444ToRgba4444_SSE2;
|
WebPYUV444Converters[MODE_RGBA_4444] = Yuv444ToRgba4444_SSE2;
|
||||||
WebPYUV444Converters[MODE_RGB_565] = Yuv444ToRgb565_SSE2;
|
WebPYUV444Converters[MODE_RGB_565] = Yuv444ToRgb565_SSE2;
|
||||||
WebPYUV444Converters[MODE_rgbA] = Yuv444ToRgba_SSE2;
|
|
||||||
WebPYUV444Converters[MODE_bgrA] = Yuv444ToBgra_SSE2;
|
|
||||||
WebPYUV444Converters[MODE_Argb] = Yuv444ToArgb_SSE2;
|
WebPYUV444Converters[MODE_Argb] = Yuv444ToArgb_SSE2;
|
||||||
WebPYUV444Converters[MODE_rgbA_4444] = Yuv444ToRgba4444_SSE2;
|
WebPYUV444Converters[MODE_rgbA_4444] = Yuv444ToRgba4444_SSE2;
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -1134,12 +1134,7 @@ static int Import(WebPPicture* const picture,
|
|||||||
|
|
||||||
// Public API
|
// Public API
|
||||||
|
|
||||||
int WebPPictureImportRGB(WebPPicture* picture,
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
const uint8_t* rgb, int rgb_stride) {
|
|
||||||
return (picture != NULL && rgb != NULL)
|
|
||||||
? Import(picture, rgb, rgb_stride, 3, 0, 0)
|
|
||||||
: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int WebPPictureImportBGR(WebPPicture* picture,
|
int WebPPictureImportBGR(WebPPicture* picture,
|
||||||
const uint8_t* rgb, int rgb_stride) {
|
const uint8_t* rgb, int rgb_stride) {
|
||||||
@ -1148,13 +1143,6 @@ int WebPPictureImportBGR(WebPPicture* picture,
|
|||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int WebPPictureImportRGBA(WebPPicture* picture,
|
|
||||||
const uint8_t* rgba, int rgba_stride) {
|
|
||||||
return (picture != NULL && rgba != NULL)
|
|
||||||
? Import(picture, rgba, rgba_stride, 4, 0, 1)
|
|
||||||
: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int WebPPictureImportBGRA(WebPPicture* picture,
|
int WebPPictureImportBGRA(WebPPicture* picture,
|
||||||
const uint8_t* rgba, int rgba_stride) {
|
const uint8_t* rgba, int rgba_stride) {
|
||||||
return (picture != NULL && rgba != NULL)
|
return (picture != NULL && rgba != NULL)
|
||||||
@ -1162,12 +1150,6 @@ int WebPPictureImportBGRA(WebPPicture* picture,
|
|||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int WebPPictureImportRGBX(WebPPicture* picture,
|
|
||||||
const uint8_t* rgba, int rgba_stride) {
|
|
||||||
return (picture != NULL && rgba != NULL)
|
|
||||||
? Import(picture, rgba, rgba_stride, 4, 0, 0)
|
|
||||||
: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int WebPPictureImportBGRX(WebPPicture* picture,
|
int WebPPictureImportBGRX(WebPPicture* picture,
|
||||||
const uint8_t* rgba, int rgba_stride) {
|
const uint8_t* rgba, int rgba_stride) {
|
||||||
@ -1176,4 +1158,27 @@ int WebPPictureImportBGRX(WebPPicture* picture,
|
|||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
|
int WebPPictureImportRGB(WebPPicture* picture,
|
||||||
|
const uint8_t* rgb, int rgb_stride) {
|
||||||
|
return (picture != NULL && rgb != NULL)
|
||||||
|
? Import(picture, rgb, rgb_stride, 3, 0, 0)
|
||||||
|
: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int WebPPictureImportRGBA(WebPPicture* picture,
|
||||||
|
const uint8_t* rgba, int rgba_stride) {
|
||||||
|
return (picture != NULL && rgba != NULL)
|
||||||
|
? Import(picture, rgba, rgba_stride, 4, 0, 1)
|
||||||
|
: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int WebPPictureImportRGBX(WebPPicture* picture,
|
||||||
|
const uint8_t* rgba, int rgba_stride) {
|
||||||
|
return (picture != NULL && rgba != NULL)
|
||||||
|
? Import(picture, rgba, rgba_stride, 4, 0, 0)
|
||||||
|
: 0;
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
@ -270,9 +270,11 @@ size_t NAME(const uint8_t* in, int w, int h, int bps, float q, \
|
|||||||
}
|
}
|
||||||
|
|
||||||
ENCODE_FUNC(WebPEncodeRGB, WebPPictureImportRGB)
|
ENCODE_FUNC(WebPEncodeRGB, WebPPictureImportRGB)
|
||||||
ENCODE_FUNC(WebPEncodeBGR, WebPPictureImportBGR)
|
|
||||||
ENCODE_FUNC(WebPEncodeRGBA, WebPPictureImportRGBA)
|
ENCODE_FUNC(WebPEncodeRGBA, WebPPictureImportRGBA)
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
ENCODE_FUNC(WebPEncodeBGR, WebPPictureImportBGR)
|
||||||
ENCODE_FUNC(WebPEncodeBGRA, WebPPictureImportBGRA)
|
ENCODE_FUNC(WebPEncodeBGRA, WebPPictureImportBGRA)
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
#undef ENCODE_FUNC
|
#undef ENCODE_FUNC
|
||||||
|
|
||||||
@ -283,9 +285,11 @@ size_t NAME(const uint8_t* in, int w, int h, int bps, uint8_t** out) { \
|
|||||||
}
|
}
|
||||||
|
|
||||||
LOSSLESS_ENCODE_FUNC(WebPEncodeLosslessRGB, WebPPictureImportRGB)
|
LOSSLESS_ENCODE_FUNC(WebPEncodeLosslessRGB, WebPPictureImportRGB)
|
||||||
LOSSLESS_ENCODE_FUNC(WebPEncodeLosslessBGR, WebPPictureImportBGR)
|
|
||||||
LOSSLESS_ENCODE_FUNC(WebPEncodeLosslessRGBA, WebPPictureImportRGBA)
|
LOSSLESS_ENCODE_FUNC(WebPEncodeLosslessRGBA, WebPPictureImportRGBA)
|
||||||
|
#if !defined(WEBP_REDUCE_CSP)
|
||||||
|
LOSSLESS_ENCODE_FUNC(WebPEncodeLosslessBGR, WebPPictureImportBGR)
|
||||||
LOSSLESS_ENCODE_FUNC(WebPEncodeLosslessBGRA, WebPPictureImportBGRA)
|
LOSSLESS_ENCODE_FUNC(WebPEncodeLosslessBGRA, WebPPictureImportBGRA)
|
||||||
|
#endif // WEBP_REDUCE_CSP
|
||||||
|
|
||||||
#undef LOSSLESS_ENCODE_FUNC
|
#undef LOSSLESS_ENCODE_FUNC
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user