Index: third_party/libwebp/enc/histogram.h |
diff --git a/third_party/libwebp/enc/histogram.h b/third_party/libwebp/enc/histogram.h |
index 1cf4c54749fc17ffb867938457b4508a5f766e66..d303d1d58ba61caae7b7e85bc1f08a96340e0ed9 100644 |
--- a/third_party/libwebp/enc/histogram.h |
+++ b/third_party/libwebp/enc/histogram.h |
@@ -14,10 +14,6 @@ |
#ifndef WEBP_ENC_HISTOGRAM_H_ |
#define WEBP_ENC_HISTOGRAM_H_ |
-#include <assert.h> |
-#include <stddef.h> |
-#include <stdlib.h> |
-#include <stdio.h> |
#include <string.h> |
#include "./backward_references.h" |
@@ -28,6 +24,9 @@ |
extern "C" { |
#endif |
+// Not a trivial literal symbol. |
+#define VP8L_NON_TRIVIAL_SYM (0xffffffff) |
+ |
// A simple container for histograms of data. |
typedef struct { |
// literal_ contains green literal, palette-code and |
@@ -39,9 +38,11 @@ typedef struct { |
// Backward reference prefix-code histogram. |
uint32_t distance_[NUM_DISTANCE_CODES]; |
int palette_code_bits_; |
- double bit_cost_; // cached value of VP8LHistogramEstimateBits(this) |
- double literal_cost_; // Cached values of dominant entropy costs: |
- double red_cost_; // literal, red & blue. |
+ uint32_t trivial_symbol_; // True, if histograms for Red, Blue & Alpha |
+ // literal symbols are single valued. |
+ double bit_cost_; // cached value of bit cost. |
+ double literal_cost_; // Cached values of dominant entropy costs: |
+ double red_cost_; // literal, red & blue. |
double blue_cost_; |
} VP8LHistogram; |
@@ -91,14 +92,6 @@ VP8LHistogram* VP8LAllocateHistogram(int cache_bits); |
void VP8LHistogramAddSinglePixOrCopy(VP8LHistogram* const histo, |
const PixOrCopy* const v); |
-// Estimate how many bits the combined entropy of literals and distance |
-// approximately maps to. |
-double VP8LHistogramEstimateBits(const VP8LHistogram* const p); |
- |
-// This function estimates the cost in bits excluding the bits needed to |
-// represent the entropy code itself. |
-double VP8LHistogramEstimateBitsBulk(const VP8LHistogram* const p); |
- |
static WEBP_INLINE int VP8LHistogramNumCodes(int palette_code_bits) { |
return NUM_LITERAL_CODES + NUM_LENGTH_CODES + |
((palette_code_bits > 0) ? (1 << palette_code_bits) : 0); |
@@ -107,10 +100,22 @@ static WEBP_INLINE int VP8LHistogramNumCodes(int palette_code_bits) { |
// Builds the histogram image. |
int VP8LGetHistoImageSymbols(int xsize, int ysize, |
const VP8LBackwardRefs* const refs, |
- int quality, int histogram_bits, int cache_bits, |
+ int quality, int low_effort, |
+ int histogram_bits, int cache_bits, |
VP8LHistogramSet* const image_in, |
+ VP8LHistogramSet* const tmp_histos, |
uint16_t* const histogram_symbols); |
+// Returns the entropy for the symbols in the input array. |
+// Also sets trivial_symbol to the code value, if the array has only one code |
+// value. Otherwise, set it to VP8L_NON_TRIVIAL_SYM. |
+double VP8LBitsEntropy(const uint32_t* const array, int n, |
+ uint32_t* const trivial_symbol); |
+ |
+// Estimate how many bits the combined entropy of literals and distance |
+// approximately maps to. |
+double VP8LHistogramEstimateBits(const VP8LHistogram* const p); |
+ |
#ifdef __cplusplus |
} |
#endif |