📄 component_mix_local.h
字号:
int *int_taps[INFO__MAX_LIFTING_STEPS]; /* Only for int-lifting. */
int int_downshifts[INFO__MAX_LIFTING_STEPS]; /* Only for int-lifting. */
int neg_extend, pos_extend;
ifc_int *branch_buf_int[2];
} lifting_info, *lifting_info_ref;
typedef
struct component_tile_kernel {
int third_d_xform_flag;
char *third_d_identifier;
std_kernel_info third_d_kernel;
int third_d_kernel_user_defined;
} component_tile_kernel, *component_tile_kernel_ptr;
/* UofA End */
/*****************************************************************************/
/* mixing_row_buffer */
/*****************************************************************************/
typedef
struct mixing_row_buffer {
struct mixing_row_buffer *next;
ifc_int buf[1];
} mixing_row_buffer, *mixing_row_buffer_ptr;
/* Classic linked list of row buffers, where the size of the actual
structure is determined by the length of each row. */
/*****************************************************************************/
/* mixing_component_info */
/*****************************************************************************/
typedef
struct mixing_component_info {
int tile_cols;
int num_buffered_rows;
mixing_row_buffer_ptr head, tail;
} mixing_component_info, *mixing_component_info_ptr;
/* This structure essentially manages buffering for a single component,
within a single tile, where the size of the relevant buffer is discovered
dynamically as the need arises, in response to synchronization issues
induced by colour transform requirements.
`tile_cols' holds the width of the current tile. It may vary
radically from tile to tile. Whenever the tile width increases, the
row buffers must be destroyed so that they can be reallocated with
the new dimension. */
/* Begin Aerospace MCT mods (TSW) */
/*****************************************************************************/
/* matrix_data */
/*****************************************************************************/
typedef
struct matrix_data {
int width, height;
float **matrix_values;
} matrix_data, *matrix_data_ref;
/* This structure holds a transform matrix for the multi-component linear
transform */
/*****************************************************************************/
/* vector_data */
/*****************************************************************************/
typedef
struct vector_data {
int length;
float *vector_values;
} vector_data, *vector_data_ref;
/* This structure holds an offset vector for the multi-component linear
transform */
/*****************************************************************************/
/* component_xfms */
/*****************************************************************************/
typedef
struct component_xfms {
int n_decorrel_xfm;
matrix_data_ref decorrel_xfms;
int n_decorrel_off;
vector_data_ref decorrel_offs;
int n_depend_xfm;
matrix_data_ref depend_xfms;
int n_depend_off;
vector_data_ref depend_offs;
} component_xfms, *component_xfms_ref;
/* This structure holds all of the transform matrices used in the multi-
component linear transforms. */
/*****************************************************************************/
/* segment */
/*****************************************************************************/
typedef
struct segment {
int n_input_components;
int *input_components;
int n_output_components;
int * output_components;
int xfm_matrix, off_vector;
} segment, *segment_ref;
/* This structure holds all of the information associated with a component
segment for the MCT. In particular, it holds the input and output component
number in the order in which they will appear. It also holds the index
of the transform and offset matrices that will be applied. This structure
is used both for decorrelation and dependency transforms. */
/*****************************************************************************/
/* collection */
/*****************************************************************************/
typedef
struct collection {
int n_comp_segments;
segment_ref comp_segment;
int n_intermed_segments;
segment_ref intermed_segment;
int n_codestream_components;
} collection, *collection_ref;
/* This structure holds all of the segment information for a collection of
segments. */
/* End Aerospace MCT mods (TSW) */
/*****************************************************************************/
/* the_component_mix_obj */
/*****************************************************************************/
typedef
struct the_component_mix_obj {
component_mix_obj base;
analysis_ref analysis;
forward_info_ref info;
stream_out_ref stream;
int num_components;
mixing_component_info_ptr components;
int main_xform;
int num_tiles;
int *tile_xforms;
int current_xform;
int current_tile_idx;
/* UofA Begin */
component_tile_kernel_ptr tile_kernels;
int kernel_type;
conv_info conv;
lifting_info lift;
/* UofA End */
/* LANL begin */
#ifdef LANL_CMPNT_WVLT
FltBankIrr fltbankirr;
float *floatX, *floatY;
FltBankRev fltbankrev;
int *intX, *intY;
#endif
/* LANL end */
/* Kodak/SAIC Linear Transform Begin */
int next_xform_marker;
char **T_for_fnames;
char **T_rev_fnames;
float **T_for;
/* Kodak/SAIC Linear Transform End */
/* Begin Aerospace MCT mods (TSW) */
char **T_fnames;
component_xfms_ref transforms;
collection_ref default_collection;
collection_ref tile_collection;
/* End Aerospace MCT mods (TSW) */
} the_component_mix_obj, *the_component_mix_ref;
/* Manages state for the externally visible `component_mix' object.
`tile_xforms' holds an array of integers, each of which is one of
the valid colour transform identifiers. The `main_xform' field holds
the default colour transform identifier. */
#endif /* COMPONENT_MIX_LOCAL_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -