SPECK wavelet codec.
|
Data Structures |
| struct | pixel_set_tag |
Defines |
| #define | TYPE_POINT 0 |
| #define | TYPE_S 1 |
| #define | TYPE_I 2 |
| #define | TYPE_EMPTY 3 |
| #define | STAGE_S 0 |
| #define | STAGE_I 1 |
| #define | MIN_SPECK_BUF_SIZE 1 |
| #define | THRESHOLD_BITS 6 |
| #define | PIXEL_SET(_set) ((pixel_set *) (_set->data)) |
| #define | SLOT_INDEX(_set) (number_of_bits(MIN(_set->width, _set->height)) - 1) |
| #define | BREAK_IF_OVERFLOW(_x) if (_x == BIT_BUFFER_OVERFLOW) break |
| #define | RETURN_IF_OVERFLOW(_x) if (_x == BIT_BUFFER_OVERFLOW) return _x |
| #define | BREAK_IF_UNDERFLOW(_x) if (_x == BIT_BUFFER_UNDERFLOW) break |
| #define | RETURN_IF_UNDERFLOW(_x) if (_x == BIT_BUFFER_UNDERFLOW) return _x |
| #define | CONTINUE_IF_EMPTY(_x) if (LIST_IS_EMPTY(_x)) continue |
Typedefs |
| typedef struct pixel_set_tag | pixel_set |
Functions |
| local int | max_coeff (int **channel, int channel_size) |
| local int | validate_set (pixel_set *set, int channel_size) |
| local int | significance_test (pixel_set *set, int threshold, int **channel, int channel_size) |
| local void | select_part_type (pixel_set *set) |
| local void | split_set (pixel_set *set, pixel_set *part1, pixel_set *part2, pixel_set *part3, pixel_set *part4, int channel_size) |
| local linked_list ** | alloc_LIS_slots (int channel_size) |
| local void | free_LIS_slots (linked_list **LIS_slots, int channel_size) |
| local void | assign_set (list_node *node, pixel_set *set) |
| local void | zero_channel (int **channel, int channel_size) |
| local int | speck_encode_S (int **channel, int channel_size, pixel_set *set, linked_list **LIS_slots, linked_list *LSP, bit_buffer *bb, int threshold) |
| local int | speck_process_S (int **channel, int channel_size, list_node *node, linked_list *slot, linked_list **LIS_slots, linked_list *LSP, bit_buffer *bb, int threshold, int coding_stage) |
| local int | speck_encode_I (int **channel, int channel_size, pixel_set *I, linked_list **LIS_slots, linked_list *LSP, bit_buffer *bb, int threshold) |
| local int | speck_process_I (int **channel, int channel_size, pixel_set *I, linked_list **LIS_slots, linked_list *LSP, bit_buffer *bb, int threshold) |
| local int | encode_sorting_pass (int **channel, int channel_size, linked_list **LIS_slots, linked_list *LSP, pixel_set *I, bit_buffer *bb, int threshold) |
| local int | encode_refinement_pass (int **channel, linked_list *LSP, bit_buffer *bb, int threshold) |
| local int | speck_decode_S (int **channel, int channel_size, pixel_set *set, linked_list **LIS_slots, linked_list *LSP, bit_buffer *bb, int threshold) |
| local int | speck_unprocess_S (int **channel, int channel_size, list_node *node, linked_list *slot, linked_list **LIS_slots, linked_list *LSP, bit_buffer *bb, int threshold, int coding_stage) |
| local int | speck_decode_I (int **channel, int channel_size, pixel_set *I, linked_list **LIS_slots, linked_list *LSP, bit_buffer *bb, int threshold) |
| local int | speck_unprocess_I (int **channel, int channel_size, pixel_set *I, linked_list **LIS_slots, linked_list *LSP, bit_buffer *bb, int threshold) |
| local int | decode_sorting_pass (int **channel, int channel_size, linked_list **LIS_slots, linked_list *LSP, pixel_set *I, bit_buffer *bb, int threshold) |
| local int | decode_refinement_pass (int **channel, linked_list *LSP, bit_buffer *bb, int threshold) |
| local void | speck_init (linked_list **LIS_slots, pixel_set *I, int channel_size, int mode) |
| int | speck_encode (int **channel, int channel_size, unsigned char *buf, int buf_size) |
| void | speck_decode (unsigned char *buf, int buf_size, int **channel, int channel_size) |
This file represents SPECK - The Set-Partitioning Embedded Block wavelet codec. To understand the algorithm you have to read original article from William Pearlman and Asad Islam. Also it is highly recommended to get familar with coding example.