/* * cwfa.h * * Written by: Ullrich Hafner * * This file is part of FIASCO (Fractal Image And Sequence COdec) * Copyright (C) 1994-2000 Ullrich Hafner */ /* * $Date: 2000/10/28 17:39:30 $ * $Author: hafner $ * $Revision: 5.3 $ * $State: Exp $ */ #ifndef _CWFA_H #define _CWFA_H #include "wfa.h" #include "types.h" #include "tiling.h" #include "rpf.h" #include "domain-pool.h" #include "bintree.h" #include "coeff.h" #include "list.h" #include "wfalib.h" #include "options.h" extern const real_t MAXCOSTS; typedef struct motion { image_t *original; /* Current image */ image_t *past; /* Preceding image */ image_t *future; /* Succeeding image */ frame_type_e frame_type; /* frame type: B_, P_ I_FRAME */ unsigned number; /* display number of frame */ real_t *xbits; /* # bits for mv x-component */ real_t *ybits; /* # bits for mv y-component */ real_t **mc_forward_norms; /* norms of mcpe */ real_t **mc_backward_norms; /* norms of mcpe */ } motion_t; typedef struct range /* * Information about current range in the original image. * Approximation data (error, encoding bits, approximation type and factors * of the linear combination) are also saved. */ { unsigned global_address; /* We need absolute image addresses for distance calculations. */ unsigned x, y; /* Coordinates of upper left corner */ unsigned image; /* Position in the tree */ unsigned address; /* Address of the pixel data */ unsigned level; /* Level of the range */ real_t weight [MAXEDGES + 1]; /* coeff. of the approximation */ word_t into [MAXEDGES + 1]; /* used domains of the approximation */ int tree; /* == domain : range is approximated with new state 'domain' == RANGE : with a linear comb. */ real_t err; /* approximation error */ real_t tree_bits; /* # bits to encode tree */ real_t matrix_bits; /* # bits to encode matrices */ real_t weights_bits; /* # bits to encode weights */ mv_t mv; /* motion vector */ real_t mv_tree_bits; /* # bits to encode mv tree */ real_t mv_coord_bits; /* # bits to encode mv coordinates */ real_t nd_tree_bits; /* # bits to encode nd tree */ real_t nd_weights_bits; /* # bits to encode nd factors */ bool_t prediction; /* range is predicted? */ } range_t; typedef struct coding /* * All parameters and variables that must be accessible through the coding * process. */ { real_t price; /* determines quality of approx. */ real_t **images_of_state; /* image of state i at level 0, ... , imageslevel */ real_t *(*ip_states_state)[MAXLEVEL]; /* inner products between state i and states 0, ... , i at all image levels */ real_t **ip_images_state; /* inner products between all ranges and state i */ real_t *pixels; /* current image pixels stored in tree order (only leaves are stored) */ unsigned products_level; /* inner products are stored up to this level */ tiling_t *tiling; /* tiling of the entire image */ tree_t tree; /* probability model */ tree_t p_tree; /* prediction probability model */ motion_t *mt; /* motion compensation information */ coeff_t *coeff; coeff_t *d_coeff; domain_pool_t *domain_pool; domain_pool_t *d_domain_pool; c_options_t options; /* global options */ } coding_t; #endif /* not _CWFA_H */