diff --git a/src/app/file/webp_format.cpp b/src/app/file/webp_format.cpp index 8a38d0562..a5fa8ea9f 100644 --- a/src/app/file/webp_format.cpp +++ b/src/app/file/webp_format.cpp @@ -201,6 +201,25 @@ const std::pair enc_error_map_data[] = { const std::map WebPEncodingErrorMap(enc_error_map_data, enc_error_map_data + sizeof enc_error_map_data / sizeof enc_error_map_data[0]); +#if WEBP_ENCODER_ABI_VERSION < 0x0203 +#define MAX_LEVEL 9 +// Mapping between -z level and -m / -q parameter settings. +static const struct { + uint8_t method_; + uint8_t quality_; +} kLosslessPresets[MAX_LEVEL + 1] = { + { 0, 0 }, { 1, 20 }, { 2, 25 }, { 3, 30 }, { 3, 50 }, + { 4, 50 }, { 4, 75 }, { 4, 90 }, { 5, 90 }, { 6, 100 } +}; +int WebPConfigLosslessPreset(WebPConfig* config, int level) { + if (config == NULL || level < 0 || level > MAX_LEVEL) return 0; + config->lossless = 1; + config->method = kLosslessPresets[level].method_; + config->quality = kLosslessPresets[level].quality_; + return 1; +} +#endif + static int ProgressReport(int percent, const WebPPicture* const pic) { fop_progress(((writerData*)pic->custom_ptr)->fop, (double)percent/(double)100);