Feat: Updates to recorder to enable thumbnail generation in prod (#12878) fcbebb25e4
* Add ability to run recorder as a service

* Fix includes

* Further optimizations

* ADd profiling

* include profiler include

* Make png compression level configurable

* Add webp support

* Fix webp build

* Make webp lossless

* productionise code

* Fix writing

* back to lossless

* Fix up main

* Clang format

* PR feedback fixes

* Split libweb enc

* Fix PR feedback

Co-authored-by: Arthur Vivian <arthur@rive.app>
diff --git a/.rive_head b/.rive_head
index fecddeb..f2ece2f 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-0ed7a0a13d696f11d9a430c22a1edda12c4cc61c
+fcbebb25e41ff16477bb48325bd5cd66d7f28038
diff --git a/dependencies/premake5_libwebp_v2.lua b/dependencies/premake5_libwebp_v2.lua
index 00eb5f1..4750640 100644
--- a/dependencies/premake5_libwebp_v2.lua
+++ b/dependencies/premake5_libwebp_v2.lua
@@ -164,3 +164,57 @@
         buildoptions({ '-mssse3', '-msse4.1' })
     end
 end
+
+-- Encoder front-end and sharpyuv live in a separate static lib so consumers
+-- that only decode (e.g. unit tests with /fp:strict on MSVC) don't compile
+-- sharpyuv_gamma.c. Set LIBWEBP_BUILD_ENCODER = true before dofile()ing this
+-- script to emit the libwebp_enc project (recorder, texture_compressor).
+if LIBWEBP_BUILD_ENCODER then
+    project('libwebp_enc')
+    do
+        kind('StaticLib')
+        optimize('Speed')
+        dependson('libwebp')
+
+        includedirs({ libwebp })
+
+        files({
+            libwebp .. '/sharpyuv/sharpyuv.c',
+            libwebp .. '/sharpyuv/sharpyuv_cpu.c',
+            libwebp .. '/sharpyuv/sharpyuv_csp.c',
+            libwebp .. '/sharpyuv/sharpyuv_dsp.c',
+            libwebp .. '/sharpyuv/sharpyuv_gamma.c',
+            libwebp .. '/sharpyuv/sharpyuv_neon.c',
+            libwebp .. '/sharpyuv/sharpyuv_sse2.c',
+            libwebp .. '/src/enc/alpha_enc.c',
+            libwebp .. '/src/enc/analysis_enc.c',
+            libwebp .. '/src/enc/backward_references_cost_enc.c',
+            libwebp .. '/src/enc/backward_references_enc.c',
+            libwebp .. '/src/enc/config_enc.c',
+            libwebp .. '/src/enc/cost_enc.c',
+            libwebp .. '/src/enc/filter_enc.c',
+            libwebp .. '/src/enc/frame_enc.c',
+            libwebp .. '/src/enc/histogram_enc.c',
+            libwebp .. '/src/enc/iterator_enc.c',
+            libwebp .. '/src/enc/near_lossless_enc.c',
+            libwebp .. '/src/enc/picture_csp_enc.c',
+            libwebp .. '/src/enc/picture_enc.c',
+            libwebp .. '/src/enc/picture_psnr_enc.c',
+            libwebp .. '/src/enc/picture_rescale_enc.c',
+            libwebp .. '/src/enc/picture_tools_enc.c',
+            libwebp .. '/src/enc/predictor_enc.c',
+            libwebp .. '/src/enc/quant_enc.c',
+            libwebp .. '/src/enc/syntax_enc.c',
+            libwebp .. '/src/enc/token_enc.c',
+            libwebp .. '/src/enc/tree_enc.c',
+            libwebp .. '/src/enc/vp8l_enc.c',
+            libwebp .. '/src/enc/webp_enc.c',
+        })
+
+        filter({ 'system:windows', 'toolset:clang' })
+        do
+            buildoptions({ '-mssse3', '-msse4.1' })
+        end
+        filter({})
+    end
+end