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"
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
,
37 int row
, int num_rows
, uint8_t* data
);
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 // The reconstruction will be done for 'num_rows' rows starting from 'row'
48 // (assuming rows upto 'row - 1' are already reconstructed).
49 extern const WebPUnfilterFunc WebPUnfilters
[WEBP_FILTER_LAST
];
51 // Fast estimate of a potentially good filter.
52 WEBP_FILTER_TYPE
EstimateBestFilter(const uint8_t* data
,
53 int width
, int height
, int stride
);
59 #endif /* WEBP_UTILS_FILTERS_H_ */