Index: third_party/libwebp/utils/utils.h |
diff --git a/third_party/libwebp/utils/utils.h b/third_party/libwebp/utils/utils.h |
index f506d668722f13831a67d75d06733ddbb0ac1e5e..e0a81126df8e703b10cf529b2a89c610573c0b93 100644 |
--- a/third_party/libwebp/utils/utils.h |
+++ b/third_party/libwebp/utils/utils.h |
@@ -21,6 +21,7 @@ |
#include <assert.h> |
+#include "../dsp/dsp.h" |
#include "../webp/types.h" |
#ifdef __cplusplus |
@@ -51,7 +52,7 @@ WEBP_EXTERN(void) WebPSafeFree(void* const ptr); |
// Alignment |
#define WEBP_ALIGN_CST 31 |
-#define WEBP_ALIGN(PTR) ((uintptr_t)((PTR) + WEBP_ALIGN_CST) & ~WEBP_ALIGN_CST) |
+#define WEBP_ALIGN(PTR) (((uintptr_t)(PTR) + WEBP_ALIGN_CST) & ~WEBP_ALIGN_CST) |
#if defined(WEBP_FORCE_ALIGNED) |
#include <string.h> |
@@ -65,10 +66,12 @@ static WEBP_INLINE void WebPUint32ToMem(uint8_t* const ptr, uint32_t val) { |
memcpy(ptr, &val, sizeof(val)); |
} |
#else |
-static WEBP_INLINE uint32_t WebPMemToUint32(const uint8_t* const ptr) { |
+static WEBP_UBSAN_IGNORE_UNDEF WEBP_INLINE |
+uint32_t WebPMemToUint32(const uint8_t* const ptr) { |
return *(const uint32_t*)ptr; |
} |
-static WEBP_INLINE void WebPUint32ToMem(uint8_t* const ptr, uint32_t val) { |
+static WEBP_UBSAN_IGNORE_UNDEF WEBP_INLINE |
+void WebPUint32ToMem(uint8_t* const ptr, uint32_t val) { |
*(uint32_t*)ptr = val; |
} |
#endif |
@@ -158,6 +161,19 @@ WEBP_EXTERN(void) WebPCopyPixels(const struct WebPPicture* const src, |
struct WebPPicture* const dst); |
//------------------------------------------------------------------------------ |
+// Unique colors. |
+ |
+// Returns count of unique colors in 'pic', assuming pic->use_argb is true. |
+// If the unique color count is more than MAX_COLOR_COUNT, returns |
+// MAX_COLOR_COUNT+1. |
+// If 'palette' is not NULL and number of unique colors is less than or equal to |
+// MAX_COLOR_COUNT, also outputs the actual unique colors into 'palette'. |
+// Note: 'palette' is assumed to be an array already allocated with at least |
+// MAX_COLOR_COUNT elements. |
+WEBP_EXTERN(int) WebPGetColorPalette(const struct WebPPicture* const pic, |
+ uint32_t* const palette); |
+ |
+//------------------------------------------------------------------------------ |
#ifdef __cplusplus |
} // extern "C" |