Lines Matching full:palette

10 // Utilities for palette analysis.
14 #include "src/utils/palette.h"
27 // Palette reordering for smaller sum of deltas (and for smaller storage).
41 // palette entry diff.
80 void PrepareMapToPalette(const uint32_t palette[], uint32_t num_colors, in PrepareMapToPalette() argument
83 memcpy(sorted, palette, num_colors * sizeof(*sorted)); in PrepareMapToPalette()
86 idx_map[SearchColorNoIdx(sorted, palette[i], num_colors)] = i; in PrepareMapToPalette()
95 int GetColorPalette(const WebPPicture* const pic, uint32_t* const palette) { in GetColorPalette() argument
137 if (palette != NULL) { // Fill the colors into palette. in GetColorPalette()
141 palette[num_colors] = colors[i]; in GetColorPalette()
145 qsort(palette, num_colors, sizeof(*palette), PaletteCompareColorsForQsort); in GetColorPalette()
155 // The palette has been sorted by alpha. This function checks if the other
156 // components of the palette have a monotonic development with regards to
157 // position in the palette. If all have monotonic development, there is
161 static int PaletteHasNonMonotonousDeltas(const uint32_t* const palette, in PaletteHasNonMonotonousDeltas() argument
167 const uint32_t diff = VP8LSubPixels(palette[i], predict); in PaletteHasNonMonotonousDeltas()
180 predict = palette[i]; in PaletteHasNonMonotonousDeltas()
186 int num_colors, uint32_t* const palette) { in PaletteSortMinimizeDeltas()
189 memcpy(palette, palette_sorted, num_colors * sizeof(*palette)); in PaletteSortMinimizeDeltas()
192 // deltas in the palette. This reduces storage needs since the in PaletteSortMinimizeDeltas()
193 // palette is stored with delta encoding. in PaletteSortMinimizeDeltas()
198 const uint32_t cur_score = PaletteColorDistance(palette[k], predict); in PaletteSortMinimizeDeltas()
204 SwapColor(&palette[best_ix], &palette[i]); in PaletteSortMinimizeDeltas()
205 predict = palette[i]; in PaletteSortMinimizeDeltas()
210 // Modified Zeng method from "A Survey on Palette Reordering
245 const uint32_t* const palette, uint32_t num_colors, in CoOccurrenceBuild() argument
260 PrepareMapToPalette(palette, num_colors, palette_sorted, idx_map); in CoOccurrenceBuild()
270 // between Memon's and the modified Zeng's palette reordering methods". in CoOccurrenceBuild()
299 uint32_t* const palette) { in PaletteSortModifiedZeng() argument
306 // TODO(vrabaud) check whether one color images should use palette or not. in PaletteSortModifiedZeng()
373 // Re-map the palette. in PaletteSortModifiedZeng()
375 palette[i] = palette_in[remapping[(first + i) % num_colors]]; in PaletteSortModifiedZeng()
384 uint32_t* const palette) { in PaletteSort() argument
387 // Nothing to do, we have already sorted the palette. in PaletteSort()
388 memcpy(palette, palette_sorted, num_colors * sizeof(*palette)); in PaletteSort()
391 PaletteSortMinimizeDeltas(palette_sorted, num_colors, palette); in PaletteSort()
394 return PaletteSortModifiedZeng(pic, palette_sorted, num_colors, palette); in PaletteSort()