1 // Copyright 2011 Google Inc. All Rights Reserved.
3 // Use of this source code is governed by a BSD-style license
4 // that can be found in the COPYING file in the root of the source
5 // tree. An additional intellectual property rights grant can be found
6 // in the file PATENTS. All contributing project authors may
7 // be found in the AUTHORS file in the root of the source tree.
8 // -----------------------------------------------------------------------------
10 // Spatial prediction using various filters
12 // Author: Urvang (urvang@google.com)
14 #ifndef WEBP_UTILS_FILTERS_H_
15 #define WEBP_UTILS_FILTERS_H_
17 #include "../webp/types.h"
19 #if defined(__cplusplus) || defined(c_plusplus)
26 WEBP_FILTER_HORIZONTAL
,
29 WEBP_FILTER_LAST
= WEBP_FILTER_GRADIENT
+ 1, // end marker
34 typedef void (*WebPFilterFunc
)(const uint8_t* in
, int width
, int height
,
35 int stride
, uint8_t* out
);
36 typedef void (*WebPUnfilterFunc
)(int width
, int height
, int stride
,
39 // Filter the given data using the given predictor.
40 // 'in' corresponds to a 2-dimensional pixel array of size (stride * height)
42 // 'stride' is number of bytes per scan line (with possible padding).
43 // 'out' should be pre-allocated.
44 extern const WebPFilterFunc WebPFilters
[WEBP_FILTER_LAST
];
46 // In-place reconstruct the original data from the given filtered data.
47 extern const WebPUnfilterFunc WebPUnfilters
[WEBP_FILTER_LAST
];
49 // Fast estimate of a potentially good filter.
50 extern WEBP_FILTER_TYPE
EstimateBestFilter(const uint8_t* data
,
51 int width
, int height
, int stride
);
53 #if defined(__cplusplus) || defined(c_plusplus)
57 #endif /* WEBP_UTILS_FILTERS_H_ */