RPS's Wavelets Package
======================

rps-help@cs.northwestern.edu

The Wavelets package implements wavelet transforms in many different types of
modes for use in distributed systems research.  The transform types that are
supported include statically structured streaming transforms in sample and
block modes, dynamically structured streaming transforms in sample and block
modes, and discrete transforms.  Each of the featured transforms provide
multi-resolution analysis where sets of details and approximation signals are
returned.

For more information read the Tsunami Technical Report (included).

INCLUDE FILES
-------------

BINARY UTILITY INCLUDES

cmdlinefuncs.h
 - General output and helper functions for cmd line utils.

flatparser.h
 - Functions for parsing utility outputs.



GENERAL INCLUDES

util.h
 - Utility functions such as MIN, MAX, DEBUG_PRINT, etc.

Wavelets.h
 - Include this for using transform classes and sampletypes.



WAVELET INCLUDES

waveletinfo.h
 - Constants used in the package.

sample.h
 - The Sample abstraction with Input and Output samples.

sampleblock.h
 - The SampleBlock abstraction with Input and Output sample blocks.

waveletsample.h
 - Wavelet samples which are inherited from Samples.

waveletsampleblock.h
 - Wavelet sample blocks which are inherited from SampleBlocks.

coefficients.h
 - The supported wavelet coefficients, CQF, Daubechies 2 through 20.

filter.h
 - FIRFilter class that can run in sample or block mode.

downsample.h
 - The downsampler class that can run in sample or block mode.

upsample.h
 - The upsampler class that can run in sample or block mode.

stage.h
 - A forward stage contains 2 filters and 2 downsamplers and  a number of
   operations.  A reverse stage contains 2 filters and 2 upsamplers and a
   number of operations.

transforms.h
 - Contains the streaming transforms (static, dynamic) and the discrete
   transforms.  The streaming transforms use stages chained together to
   produce the results.

delay.h
 - The delay blocks are used to properly phase align the streaming
   transforms to obtain perfect reconstruction.

jitter.h
 - Jitter classes are used to zero fill or interpolate missed or late arriving
   samples.


LIBRARIES
---------

libwavelets.a


BINARIES
--------

STREAMING STATIC TRANSFORMS

sample_static_sfwt
 - Forward static transform that provides approximations, details and transform
   signals in sample operation.

block_static_sfwt
 - Same as above utility run in blocks.

sample_static_mixed_sfwt
 - Forward static transform that provides a mix of approximation and detail
   signals based on a signal specification.

block_static_mixed_sfwt
 - Same as above utility run in blocks.

sample_static_srwt
 - Reverse static transform that reconstructs the time-domain signal from wavelet
   coefficients.

block_static_srwt
 - Same as above utility run in blocks.

sample_static_mixed_srwt
 - Reconstructions using a mix of approximation and detail signals based on a
   signal specification.

block_static_mixed_srwt
 - Same as above utility run in blocks.

sample_static_streaming_test
 - Performs a static forward transform followed by a delay block and static
   reverse transform and calculates the error between input and output.  For
   perfect reconstruction the error should be ~0.  All operations are done
   in sample mode.

block_static_streaming_test
 - Same as above utility run in blocks.



STREAMING DYNAMIC TRANSFORMS

sample_dynamic_sfwt
 - Forward dynamic transform that provides approximation, detail and transform
   signals in sample operation.  Structure and filter types change
   dynamically according to the input change interval.

block_dynamic_sfwt
 - Same as above utility run in blocks.

sample_dynamic_mixed_sfwt
 - Forward dynamic transform that provides a mix of approximation and detail
   signals based on a signal specification.  Structure and filter types change
   dynamically according to the input change interval.

block_dynamic_mixed_sfwt
 - Same as above utility run in blocks.

sample_dynamic_srwt
 - Reverse dynamic transform utility that reconstructs the time-domain signal
   from the forward transform.  The reverse transform structure and filter
   types should change at the same interval as the sfwt.

block_dynamic_srwt
 - Same as above utility run in blocks.

sample_dynamic_mixed_srwt
 - Reconstructions using a mix of approximation and detail signals based on a
   signal specification.  The structure and filter types change dynamically
   according to the input change interval.

block_dynamic_mixed_srwt
 - Same as above utility run in blocks.

sample_dynamic_streaming_test
 - System test performs a forward dynamic transform followed by the appropriate
   delay and reverse dynamic transform.  The structures change together at the
   same interval, and an error is calculated (error should be fairly large
   due to not implementing transition filters to minimize error).

block_dynamic_streaming_test
 - Same as above utility run in blocks.



DISCRETE TRANSFORMS

discrete_forward_transform
 - Performs the discrete wavelet transform on a block of samples length 2^M.  It
   can provide approximation, detail and transform signals.

discrete_reverse_transform
 - Utility converts the encoded block of wavelet coefficients back into the time-
   domain.

discrete_forward_mixed_transform
 - Performs the discrete wavelet transform but provides as output a mix of 
   approximation and detail signals based on the signal specification.

discrete_reverse_mixed_transform
 - Utility converts back to the time-domain signal using a mix of approximation
   and detail signals.  Error is usually incurred based on mix of signals.

discrete_transform_test
 - Performs the forward transform followed by an appropriate reverse transform
   and outputs the error of the operation.  The error should be ~0 for perfect
   reconstruction.