speck.h File Reference

SPECK wavelet codec. More...


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)


Detailed Description

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.

Warning:
The Set-Partitioning Embedded Block (SPECK) algorithm is protected by US Patent #6,671,413 and also may be patented in your country.

References

William A. Pearlman home page

A. Islam and W. A. Pearlman, An Embedded and Efficient Low-Complexity Hierarchical Image Coder, Visual Communications and Image Processing 99, Proceedings of SPIE Vol. 3653, pp. 294-305, Jan. 1999.

SPECK coding example


Generated on Fri May 27 14:50:00 2011 for EPSILON by  doxygen 1.5.6