• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2011 Google Inc. All Rights Reserved.
2 //
3 // This code is licensed under the same terms as WebM:
4 //  Software License Agreement:  http://www.webmproject.org/license/software/
5 //  Additional IP Rights Grant:  http://www.webmproject.org/license/additional/
6 // -----------------------------------------------------------------------------
7 //
8 // Spatial prediction using various filters
9 //
10 // Author: Urvang (urvang@google.com)
11 
12 #ifndef WEBP_UTILS_FILTERS_H_
13 #define WEBP_UTILS_FILTERS_H_
14 
15 #include "webp/types.h"
16 
17 #if defined(__cplusplus) || defined(c_plusplus)
18 extern "C" {
19 #endif
20 
21 // Filters.
22 typedef enum {
23   WEBP_FILTER_NONE = 0,
24   WEBP_FILTER_HORIZONTAL,
25   WEBP_FILTER_VERTICAL,
26   WEBP_FILTER_GRADIENT,
27   WEBP_FILTER_LAST = WEBP_FILTER_GRADIENT + 1,  // end marker
28   WEBP_FILTER_BEST,
29   WEBP_FILTER_FAST
30 } WEBP_FILTER_TYPE;
31 
32 typedef void (*WebPFilterFunc)(const uint8_t* in, int width, int height,
33                                int bpp, int stride, uint8_t* out);
34 
35 // Filter the given data using the given predictor.
36 // 'in' corresponds to a 2-dimensional pixel array of size (stride * height)
37 // in raster order.
38 // 'bpp' is number of bytes per pixel, and
39 // 'stride' is number of bytes per scan line (with possible padding).
40 // 'out' should be pre-allocated.
41 extern const WebPFilterFunc WebPFilters[WEBP_FILTER_LAST];
42 
43 // Reconstruct the original data from the given filtered data.
44 extern const WebPFilterFunc WebPUnfilters[WEBP_FILTER_LAST];
45 
46 // Fast estimate of a potentially good filter.
47 extern WEBP_FILTER_TYPE EstimateBestFilter(const uint8_t* data,
48                                            int width, int height, int stride);
49 
50 #if defined(__cplusplus) || defined(c_plusplus)
51 }    // extern "C"
52 #endif
53 
54 #endif  /* WEBP_UTILS_FILTERS_H_ */
55