]> git.sesse.net Git - fjl/blob - idct.h
4a16ea004fd8b440965de598cea2493126dcecaf
[fjl] / idct.h
1 #ifndef _IDCT_H
2 #define _IDCT_H
3
4 #include <stdint.h>
5
6 #define DCTSIZE 8
7 #define DCTSIZE2 64
8
9 // void* idct_example_alloc(const uint32_t* quant_table);
10 typedef void* (idct_alloc_t)(const uint32_t*);
11
12 // void idct_example_free(const void* userdata);
13 // userdata is the same as returned by the alloc function.
14 typedef void (idct_free_t)(void*);
15
16 // void idct_example(const int16_t* input, const void* userdata, uint8_t* output);
17 // userdata is the same as returned by the alloc function.
18 typedef void (idct_func_t)(const int16_t*, const void*, uint8_t*);
19
20 // Non-factorized reference version (section A.3.3 of the JPEG standard).
21 void* idct_reference_alloc(const uint32_t* quant_table);
22 void idct_reference_free(void* userdata);
23 void idct_reference(const int16_t* input, const void* userdata, uint8_t* output);
24
25 // Floating-point IDCT due to Arai, Agui and Nakajima (also known as AA&N).
26 // See idct.c for more details.
27 void* idct_float_alloc(const uint32_t* quant_table);
28 void idct_float_free(void* userdata);
29 void idct_float(const int16_t* input, const void* userdata, uint8_t* output);
30
31 #endif /* !defined(_IDCT_H) */