| OLD | NEW |
| 1 // Copyright 2011 Google Inc. | 1 // Copyright 2011 Google Inc. All Rights Reserved. |
| 2 // | 2 // |
| 3 // This code is licensed under the same terms as WebM: | 3 // This code is licensed under the same terms as WebM: |
| 4 // Software License Agreement: http://www.webmproject.org/license/software/ | 4 // Software License Agreement: http://www.webmproject.org/license/software/ |
| 5 // Additional IP Rights Grant: http://www.webmproject.org/license/additional/ | 5 // Additional IP Rights Grant: http://www.webmproject.org/license/additional/ |
| 6 // ----------------------------------------------------------------------------- | 6 // ----------------------------------------------------------------------------- |
| 7 // | 7 // |
| 8 // Coding tools configuration | 8 // Coding tools configuration |
| 9 // | 9 // |
| 10 // Author: Skal (pascal.massimino@gmail.com) | 10 // Author: Skal (pascal.massimino@gmail.com) |
| 11 | 11 |
| 12 #include <assert.h> | |
| 13 #include "../webp/encode.h" | 12 #include "../webp/encode.h" |
| 14 | 13 |
| 15 #if defined(__cplusplus) || defined(c_plusplus) | 14 #if defined(__cplusplus) || defined(c_plusplus) |
| 16 extern "C" { | 15 extern "C" { |
| 17 #endif | 16 #endif |
| 18 | 17 |
| 19 //------------------------------------------------------------------------------ | 18 //------------------------------------------------------------------------------ |
| 20 // WebPConfig | 19 // WebPConfig |
| 21 //------------------------------------------------------------------------------ | 20 //------------------------------------------------------------------------------ |
| 22 | 21 |
| 23 int WebPConfigInitInternal(WebPConfig* const config, | 22 int WebPConfigInitInternal(WebPConfig* config, |
| 24 WebPPreset preset, float quality, int version) { | 23 WebPPreset preset, float quality, int version) { |
| 25 if (version != WEBP_ENCODER_ABI_VERSION) { | 24 if (WEBP_ABI_IS_INCOMPATIBLE(version, WEBP_ENCODER_ABI_VERSION)) { |
| 26 return 0; // caller/system version mismatch! | 25 return 0; // caller/system version mismatch! |
| 27 } | 26 } |
| 28 if (config == NULL) return 0; | 27 if (config == NULL) return 0; |
| 29 | 28 |
| 30 config->quality = quality; | 29 config->quality = quality; |
| 31 config->target_size = 0; | 30 config->target_size = 0; |
| 32 config->target_PSNR = 0.; | 31 config->target_PSNR = 0.; |
| 33 config->method = 4; | 32 config->method = 4; |
| 34 config->sns_strength = 50; | 33 config->sns_strength = 50; |
| 35 config->filter_strength = 20; // default: light filtering | 34 config->filter_strength = 20; // default: light filtering |
| 36 config->filter_sharpness = 0; | 35 config->filter_sharpness = 0; |
| 37 config->filter_type = 0; // default: simple | 36 config->filter_type = 0; // default: simple |
| 38 config->partitions = 0; | 37 config->partitions = 0; |
| 39 config->segments = 4; | 38 config->segments = 4; |
| 40 config->pass = 1; | 39 config->pass = 1; |
| 41 config->show_compressed = 0; | 40 config->show_compressed = 0; |
| 42 config->preprocessing = 0; | 41 config->preprocessing = 0; |
| 43 config->autofilter = 0; | 42 config->autofilter = 0; |
| 44 config->alpha_compression = 0; | |
| 45 config->partition_limit = 0; | 43 config->partition_limit = 0; |
| 44 config->alpha_compression = 1; |
| 45 config->alpha_filtering = 1; |
| 46 config->alpha_quality = 100; |
| 47 config->lossless = 0; |
| 48 config->image_hint = WEBP_HINT_DEFAULT; |
| 46 | 49 |
| 47 // TODO(skal): tune. | 50 // TODO(skal): tune. |
| 48 switch (preset) { | 51 switch (preset) { |
| 49 case WEBP_PRESET_PICTURE: | 52 case WEBP_PRESET_PICTURE: |
| 50 config->sns_strength = 80; | 53 config->sns_strength = 80; |
| 51 config->filter_sharpness = 4; | 54 config->filter_sharpness = 4; |
| 52 config->filter_strength = 35; | 55 config->filter_strength = 35; |
| 53 break; | 56 break; |
| 54 case WEBP_PRESET_PHOTO: | 57 case WEBP_PRESET_PHOTO: |
| 55 config->sns_strength = 80; | 58 config->sns_strength = 80; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 70 config->filter_strength = 0; // disable filtering to retain sharpness | 73 config->filter_strength = 0; // disable filtering to retain sharpness |
| 71 config->segments = 2; | 74 config->segments = 2; |
| 72 break; | 75 break; |
| 73 case WEBP_PRESET_DEFAULT: | 76 case WEBP_PRESET_DEFAULT: |
| 74 default: | 77 default: |
| 75 break; | 78 break; |
| 76 } | 79 } |
| 77 return WebPValidateConfig(config); | 80 return WebPValidateConfig(config); |
| 78 } | 81 } |
| 79 | 82 |
| 80 int WebPValidateConfig(const WebPConfig* const config) { | 83 int WebPValidateConfig(const WebPConfig* config) { |
| 81 if (config == NULL) return 0; | 84 if (config == NULL) return 0; |
| 82 if (config->quality < 0 || config->quality > 100) | 85 if (config->quality < 0 || config->quality > 100) |
| 83 return 0; | 86 return 0; |
| 84 if (config->target_size < 0) | 87 if (config->target_size < 0) |
| 85 return 0; | 88 return 0; |
| 86 if (config->target_PSNR < 0) | 89 if (config->target_PSNR < 0) |
| 87 return 0; | 90 return 0; |
| 88 if (config->method < 0 || config->method > 6) | 91 if (config->method < 0 || config->method > 6) |
| 89 return 0; | 92 return 0; |
| 90 if (config->segments < 1 || config->segments > 4) | 93 if (config->segments < 1 || config->segments > 4) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 104 if (config->show_compressed < 0 || config->show_compressed > 1) | 107 if (config->show_compressed < 0 || config->show_compressed > 1) |
| 105 return 0; | 108 return 0; |
| 106 if (config->preprocessing < 0 || config->preprocessing > 1) | 109 if (config->preprocessing < 0 || config->preprocessing > 1) |
| 107 return 0; | 110 return 0; |
| 108 if (config->partitions < 0 || config->partitions > 3) | 111 if (config->partitions < 0 || config->partitions > 3) |
| 109 return 0; | 112 return 0; |
| 110 if (config->partition_limit < 0 || config->partition_limit > 100) | 113 if (config->partition_limit < 0 || config->partition_limit > 100) |
| 111 return 0; | 114 return 0; |
| 112 if (config->alpha_compression < 0) | 115 if (config->alpha_compression < 0) |
| 113 return 0; | 116 return 0; |
| 117 if (config->alpha_filtering < 0) |
| 118 return 0; |
| 119 if (config->alpha_quality < 0 || config->alpha_quality > 100) |
| 120 return 0; |
| 121 if (config->lossless < 0 || config->lossless > 1) |
| 122 return 0; |
| 123 if (config->image_hint >= WEBP_HINT_LAST) |
| 124 return 0; |
| 114 return 1; | 125 return 1; |
| 115 } | 126 } |
| 116 | 127 |
| 117 //------------------------------------------------------------------------------ | 128 //------------------------------------------------------------------------------ |
| 118 | 129 |
| 119 #if defined(__cplusplus) || defined(c_plusplus) | 130 #if defined(__cplusplus) || defined(c_plusplus) |
| 120 } // extern "C" | 131 } // extern "C" |
| 121 #endif | 132 #endif |
| OLD | NEW |