mirror of
				https://github.com/webmproject/libwebp.git
				synced 2025-10-31 10:25:46 +01:00 
			
		
		
		
	Fix few nits
Add/remove few casts, fixed indentation. Change-Id: Icd141694201843c04e476f09142ce4be6e502dff
This commit is contained in:
		| @@ -541,26 +541,25 @@ static const PredictorFunc kPredictors[16] = { | |||||||
|   Predictor0, Predictor0    // <- padding security sentinels |   Predictor0, Predictor0    // <- padding security sentinels | ||||||
| }; | }; | ||||||
|  |  | ||||||
| static float PredictionCostSpatial(const int* const counts, int weight_0, | static float PredictionCostSpatial(const int counts[256], int weight_0, | ||||||
|                                    double exp_val, int n) { |                                    double exp_val) { | ||||||
|   const int significant_symbols = n >> 4; |   const int significant_symbols = 256 >> 4; | ||||||
|   const double exp_decay_factor = 0.6; |   const double exp_decay_factor = 0.6; | ||||||
|   double bits = weight_0 * counts[0]; |   double bits = weight_0 * counts[0]; | ||||||
|   int i; |   int i; | ||||||
|   for (i = 1; i < significant_symbols; ++i) { |   for (i = 1; i < significant_symbols; ++i) { | ||||||
|     bits += exp_val * (counts[i] + counts[n - i]); |     bits += exp_val * (counts[i] + counts[256 - i]); | ||||||
|     exp_val *= exp_decay_factor; |     exp_val *= exp_decay_factor; | ||||||
|   } |   } | ||||||
|   return (float)(-0.1 * bits); |   return (float)(-0.1 * bits); | ||||||
| } | } | ||||||
|  |  | ||||||
| // Compute the combined Shanon's entropy for distribution {X} and {X+Y} | // Compute the combined Shanon's entropy for distribution {X} and {X+Y} | ||||||
| static float CombinedShannonEntropy(const int* const X, | static float CombinedShannonEntropy(const int X[256], const int Y[256]) { | ||||||
|                                     const int* const Y, int n) { |  | ||||||
|   int i; |   int i; | ||||||
|   double retval = 0.; |   double retval = 0.; | ||||||
|   int sumX = 0, sumXY = 0; |   int sumX = 0, sumXY = 0; | ||||||
|   for (i = 0; i < n; ++i) { |   for (i = 0; i < 256; ++i) { | ||||||
|     const int x = X[i]; |     const int x = X[i]; | ||||||
|     const int xy = x + Y[i]; |     const int xy = x + Y[i]; | ||||||
|     if (x != 0) { |     if (x != 0) { | ||||||
| @@ -583,8 +582,8 @@ static float PredictionCostSpatialHistogram(const int accumulated[4][256], | |||||||
|   double retval = 0; |   double retval = 0; | ||||||
|   for (i = 0; i < 4; ++i) { |   for (i = 0; i < 4; ++i) { | ||||||
|     const double kExpValue = 0.94; |     const double kExpValue = 0.94; | ||||||
|     retval += PredictionCostSpatial(tile[i], 1, kExpValue, 256); |     retval += PredictionCostSpatial(tile[i], 1, kExpValue); | ||||||
|     retval += CombinedShannonEntropy(tile[i], accumulated[i], 256); |     retval += CombinedShannonEntropy(tile[i], accumulated[i]); | ||||||
|   } |   } | ||||||
|   return (float)retval; |   return (float)retval; | ||||||
| } | } | ||||||
| @@ -766,7 +765,7 @@ static void PredictorInverseTransform(const VP8LTransform* const transform, | |||||||
|       AddPixelsEq(data, pred2); |       AddPixelsEq(data, pred2); | ||||||
|       // .. the rest: |       // .. the rest: | ||||||
|       while (x < safe_width) { |       while (x < safe_width) { | ||||||
|       pred_func = kPredictors[((*pred_mode_src++) >> 8) & 0xf]; |         pred_func = kPredictors[((*pred_mode_src++) >> 8) & 0xf]; | ||||||
|         for (; t < tile_width; ++t, ++x) { |         for (; t < tile_width; ++t, ++x) { | ||||||
|           const uint32_t pred = pred_func(data[x - 1], data + x - width); |           const uint32_t pred = pred_func(data[x - 1], data + x - width); | ||||||
|           AddPixelsEq(data + x, pred); |           AddPixelsEq(data + x, pred); | ||||||
| @@ -839,7 +838,7 @@ static WEBP_INLINE void ColorCodeToMultipliers(uint32_t color_code, | |||||||
|   m->red_to_blue_   = (color_code >> 16) & 0xff; |   m->red_to_blue_   = (color_code >> 16) & 0xff; | ||||||
| } | } | ||||||
|  |  | ||||||
| static WEBP_INLINE uint32_t MultipliersToColorCode(Multipliers* const m) { | static WEBP_INLINE uint32_t MultipliersToColorCode(const Multipliers* const m) { | ||||||
|   return 0xff000000u | |   return 0xff000000u | | ||||||
|          ((uint32_t)(m->red_to_blue_) << 16) | |          ((uint32_t)(m->red_to_blue_) << 16) | | ||||||
|          ((uint32_t)(m->green_to_blue_) << 8) | |          ((uint32_t)(m->green_to_blue_) << 8) | | ||||||
| @@ -852,13 +851,13 @@ static WEBP_INLINE uint32_t TransformColor(const Multipliers* const m, | |||||||
|   const uint32_t red = argb >> 16; |   const uint32_t red = argb >> 16; | ||||||
|   uint32_t new_red = red; |   uint32_t new_red = red; | ||||||
|   uint32_t new_blue = argb; |   uint32_t new_blue = argb; | ||||||
|     new_red -= ColorTransformDelta(m->green_to_red_, green); |   new_red -= ColorTransformDelta(m->green_to_red_, green); | ||||||
|     new_red &= 0xff; |   new_red &= 0xff; | ||||||
|     new_blue -= ColorTransformDelta(m->green_to_blue_, green); |   new_blue -= ColorTransformDelta(m->green_to_blue_, green); | ||||||
|     new_blue -= ColorTransformDelta(m->red_to_blue_, red); |   new_blue -= ColorTransformDelta(m->red_to_blue_, red); | ||||||
|     new_blue &= 0xff; |   new_blue &= 0xff; | ||||||
|   return (argb & 0xff00ff00u) | (new_red << 16) | (new_blue); |   return (argb & 0xff00ff00u) | (new_red << 16) | (new_blue); | ||||||
|   } | } | ||||||
|  |  | ||||||
| static WEBP_INLINE uint32_t TransformColorInverse(const Multipliers* const m, | static WEBP_INLINE uint32_t TransformColorInverse(const Multipliers* const m, | ||||||
|                                                   uint32_t argb) { |                                                   uint32_t argb) { | ||||||
| @@ -917,8 +916,8 @@ static float PredictionCostCrossColor(const int accumulated[256], | |||||||
|   // Favor low entropy, locally and globally. |   // Favor low entropy, locally and globally. | ||||||
|   // Favor small absolute values for PredictionCostSpatial |   // Favor small absolute values for PredictionCostSpatial | ||||||
|   static const double kExpValue = 2.4; |   static const double kExpValue = 2.4; | ||||||
|   return CombinedShannonEntropy(counts, accumulated, 256) + |   return CombinedShannonEntropy(counts, accumulated) + | ||||||
|          PredictionCostSpatial(counts, 3, kExpValue, 256); |          PredictionCostSpatial(counts, 3, kExpValue); | ||||||
| } | } | ||||||
|  |  | ||||||
| static float GetPredictionCostCrossColorRed( | static float GetPredictionCostCrossColorRed( | ||||||
| @@ -1630,4 +1629,3 @@ void VP8LDspInit(void) { | |||||||
| } | } | ||||||
|  |  | ||||||
| //------------------------------------------------------------------------------ | //------------------------------------------------------------------------------ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -455,7 +455,7 @@ static int GetHistoBinIndex( | |||||||
|   return bin_id; |   return bin_id; | ||||||
| } | } | ||||||
|  |  | ||||||
| // Construct the Histogram from backward references. | // Construct the histograms from backward references. | ||||||
| static void HistogramBuild( | static void HistogramBuild( | ||||||
|     int xsize, int histo_bits, const VP8LBackwardRefs* const backward_refs, |     int xsize, int histo_bits, const VP8LBackwardRefs* const backward_refs, | ||||||
|     VP8LHistogramSet* const init_histo) { |     VP8LHistogramSet* const init_histo) { | ||||||
| @@ -499,35 +499,33 @@ static void HistogramAnalyzeBin( | |||||||
|   int i; |   int i; | ||||||
|   const int histo_size = init_histo->size; |   const int histo_size = init_histo->size; | ||||||
|   VP8LHistogram** const histograms = init_histo->histograms; |   VP8LHistogram** const histograms = init_histo->histograms; | ||||||
|   if (bin_map != NULL) { |   const int bin_depth = init_histo->size + 1; | ||||||
|     const int bin_depth = init_histo->size + 1; |   DominantCostRange cost_range; | ||||||
|     DominantCostRange cost_range; |   DominantCostRangeInit(&cost_range); | ||||||
|     DominantCostRangeInit(&cost_range); |  | ||||||
|  |  | ||||||
|     // Analyze the dominant (literal, red and blue) entropy costs. |   // Analyze the dominant (literal, red and blue) entropy costs. | ||||||
|     for (i = 0; i < histo_size; ++i) { |   for (i = 0; i < histo_size; ++i) { | ||||||
|       VP8LHistogram* const histo = histograms[i]; |     VP8LHistogram* const histo = histograms[i]; | ||||||
|       UpdateHistogramCost(histo); |     UpdateHistogramCost(histo); | ||||||
|       // Copy histograms from init_histo[] to histo_image[]. |     // Copy histograms from init_histo[] to histo_image[]. | ||||||
|       *histo_image->histograms[i] = *histo; |     *histo_image->histograms[i] = *histo; | ||||||
|       UpdateDominantCostRange(histo, &cost_range); |     UpdateDominantCostRange(histo, &cost_range); | ||||||
|     } |   } | ||||||
|  |  | ||||||
|     // bin-hash histograms on three of the dominant (literal, red and blue) |   // bin-hash histograms on three of the dominant (literal, red and blue) | ||||||
|     // symbol costs. |   // symbol costs. | ||||||
|     for (i = 0; i < histo_size; ++i) { |   for (i = 0; i < histo_size; ++i) { | ||||||
|       int num_histos; |     int num_histos; | ||||||
|       VP8LHistogram* const histo = histograms[i]; |     VP8LHistogram* const histo = histograms[i]; | ||||||
|       const int16_t bin_id = (int16_t)GetHistoBinIndex(histo, &cost_range); |     const int16_t bin_id = (int16_t)GetHistoBinIndex(histo, &cost_range); | ||||||
|       const int bin_offset = bin_id * bin_depth; |     const int bin_offset = bin_id * bin_depth; | ||||||
|       // bin_map[n][0] for every bin 'n' maintains the counter for the number of |     // bin_map[n][0] for every bin 'n' maintains the counter for the number of | ||||||
|       // histograms in that bin. |     // histograms in that bin. | ||||||
|       // Get and increment the num_histos in that bin. |     // Get and increment the num_histos in that bin. | ||||||
|       num_histos = ++bin_map[bin_offset]; |     num_histos = ++bin_map[bin_offset]; | ||||||
|       assert(bin_offset + num_histos < bin_depth * BIN_SIZE); |     assert(bin_offset + num_histos < bin_depth * BIN_SIZE); | ||||||
|       // Add Histogram i'th index at num_histos (last) position in the bin_map. |     // Add histogram i'th index at num_histos (last) position in the bin_map. | ||||||
|       bin_map[bin_offset + num_histos] = i; |     bin_map[bin_offset + num_histos] = i; | ||||||
|     } |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -565,7 +563,6 @@ static void HistogramCombineBin(VP8LHistogramSet* const histo_image, | |||||||
|                                 VP8LHistogram* const histos, |                                 VP8LHistogram* const histos, | ||||||
|                                 int bin_depth, |                                 int bin_depth, | ||||||
|                                 int16_t* const bin_map) { |                                 int16_t* const bin_map) { | ||||||
|   int i; |  | ||||||
|   int bin_id; |   int bin_id; | ||||||
|   VP8LHistogram* cur_combo = histos; |   VP8LHistogram* cur_combo = histos; | ||||||
|  |  | ||||||
| @@ -573,8 +570,9 @@ static void HistogramCombineBin(VP8LHistogramSet* const histo_image, | |||||||
|     const int bin_offset = bin_id * bin_depth; |     const int bin_offset = bin_id * bin_depth; | ||||||
|     const int num_histos = bin_map[bin_offset]; |     const int num_histos = bin_map[bin_offset]; | ||||||
|     const int idx1 = bin_map[bin_offset + 1]; |     const int idx1 = bin_map[bin_offset + 1]; | ||||||
|     for (i = 2; i <= num_histos; ++i) { |     int n; | ||||||
|       const int idx2 = bin_map[bin_offset + i]; |     for (n = 2; n <= num_histos; ++n) { | ||||||
|  |       const int idx2 = bin_map[bin_offset + n]; | ||||||
|       const double bit_cost_idx2 = histo_image->histograms[idx2]->bit_cost_; |       const double bit_cost_idx2 = histo_image->histograms[idx2]->bit_cost_; | ||||||
|       if (bit_cost_idx2 > 0.) { |       if (bit_cost_idx2 > 0.) { | ||||||
|         const double bit_cost_thresh = -bit_cost_idx2 * 0.1; |         const double bit_cost_thresh = -bit_cost_idx2 * 0.1; | ||||||
| @@ -742,17 +740,13 @@ int VP8LGetHistoImageSymbols(int xsize, int ysize, | |||||||
|     if (bin_map == NULL) goto Error; |     if (bin_map == NULL) goto Error; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   // Construct the Histogram from backward references. |   // Construct the histogram from backward references. | ||||||
|   HistogramBuild(xsize, histo_bits, refs, init_histo); |   HistogramBuild(xsize, histo_bits, refs, init_histo); | ||||||
|  |  | ||||||
|   if (bin_map != NULL) { |   if (bin_map != NULL) { | ||||||
|     // Partition Histograms to different entropy bins for three dominant |  | ||||||
|     // (literal red and blue) symbol costs and compute the histogram aggregate |  | ||||||
|     // bit_cost. |  | ||||||
|     HistogramAnalyzeBin(init_histo, histo_image, bin_map); |     HistogramAnalyzeBin(init_histo, histo_image, bin_map); | ||||||
|     HistogramCombineBin(histo_image, histos, bin_depth, bin_map); |     HistogramCombineBin(histo_image, histos, bin_depth, bin_map); | ||||||
|   } else { |   } else { | ||||||
|     // Compute the histogram aggregate bit_cost. |  | ||||||
|     HistogramAnalyze(init_histo, histo_image); |     HistogramAnalyze(init_histo, histo_image); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -764,7 +758,7 @@ int VP8LGetHistoImageSymbols(int xsize, int ysize, | |||||||
|  |  | ||||||
|   ok = 1; |   ok = 1; | ||||||
|  |  | ||||||
| Error: |  Error: | ||||||
|   free(bin_map); |   free(bin_map); | ||||||
|   free(init_histo); |   free(init_histo); | ||||||
|   free(histos); |   free(histos); | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ typedef struct { | |||||||
|   // Backward reference prefix-code histogram. |   // Backward reference prefix-code histogram. | ||||||
|   int distance_[NUM_DISTANCE_CODES]; |   int distance_[NUM_DISTANCE_CODES]; | ||||||
|   int palette_code_bits_; |   int palette_code_bits_; | ||||||
|   double bit_cost_;   // cached value of VP8LHistogramEstimateBits(this) |   double bit_cost_;      // cached value of VP8LHistogramEstimateBits(this) | ||||||
|   double literal_cost_;  // Cached values of dominant entropy costs: |   double literal_cost_;  // Cached values of dominant entropy costs: | ||||||
|   double red_cost_;      //   literal, red & blue. |   double red_cost_;      //   literal, red & blue. | ||||||
|   double blue_cost_; |   double blue_cost_; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user