📄 hplx_analysis_local.h
字号:
hplx_analysis_stage__push_line_float__func push_line_float;
hplx_analysis_stage__terminate__func terminate;
int direction, use_floats;
int component_idx, level_idx, band_idx;
hplx_analysis_stage_ref branches[2];
/* SAIC/Fuji LRA begin */
int get_lra_stats; /* Flag for collecting stats on only 1st iter */
unsigned long int N; /* Running total of lines in this subband */
unsigned long pixel_count; /* Running total of pixels in this subband */
long double x1; /* Running total of x^1 (1st moment) */
long double x2; /* Running total of x^2 (2nd moment) */
long double x3; /* Running total of x^3 (3rd moment) */
long double x4; /* Running total of x^4 (4th moment) */
/* SAIC/Fuji LRA end */
quantizer_ref quant;
int usePsExtension;
/* OTLPF_CONVENTION begin; JX Wei ADFA, WJ Zeng Sharp */
int otlpf_convention;
/* OTLPF_CONVENTION end; JX Wei ADFA, WJ Zeng Sharp */
/* SAIC/Sharp/Fuji Xmask begin */
encoder_ref encoder;
float alpha;
float beta;
float *lut_alpha;
float *lut_beta_alpha;
int minlevel;
int win_width;
int bits_retained;
int respect_block_boundaries;
int lowest_ht_limit;
forward_info_ref info;
float **prev_rows;
/* SAIC/Sharp/Fuji Xmask end */
int sso_ext;
/* SAIC General Decomp. Begin */
int vert_limit;
int horiz_limit;
/* SAIC General Decomp. End */
} hplx_analysis_stage_obj;
/* This structure identifies the member functions and variables exposed
by the `hplx_analysis_stage' object, which is the base of the
`hplx_vert_analysis_by_convolution_obj', `hplx_vert_analysis_by_lifting',
`hplx_hor_analysis_by_convolution' and `hplx_hor_analysis_by_lifting'
objects. For convenience, this internal object (i.e. not exposed at the
top level in "ifc.h") is allowed to have some well-defined member
variables, as well as interface functions.
The idea is that a tree-structure of analysis stage objects is
created at the top level for each image component. Each stage
produces two sets of results, corresponding to low and high
pass subbands in the relevant directions. Accordingly, the
`direction' field must hold one of INFO__HORIZONTAL or INFO__VERTICAL.
New lines of samples produced by the analysis stage should be
passed into the next `hplx_analysis_stage' objects referenced by
the entries of the `branches' array. The recursive decomposition
terminates at special `hplx_analysis_leaf' objects, which are
extended from `hplx_analysis_stage' but do not actually perform any
analysis operations; they exist simply to pass rows of subband samples
into the quantizer referenced by the `quant' field. All other
analysis stage objects should have their `quant' field set to NULL,
but have non-NULL `branches' entries, while the leaf objects should
have NULL entries in their `branches' array. The `branch_idx'
field is valid only for these terminating objects, for which it
holds the `band_idx' value which must be passed to the
relevant `push_line_xxx' interface function of the quantizer
object.
As for the other fields, the interpretation should be reasonably
clear. The `use_floats' field indicates whether or not the relevant
analysis stage object is expected to produce floating point output.
The component and level indices are valid for all analysis stage
objects; the initialization function usually requires these values
to recover information from the `forward_info' object whose reference
it is passed. For terminating `hplx_analysis_leaf' objects, these
values are used to construct the appropriate call to
`quantizer__push_line_float' or `quantizer__push_line_fixed'.
The `sso_ext' flag indicates whether or not the SSO-DWT style
extension should be applied at tile boundaries.
SAIC General Decomp. Begin
`vert_limit' indicates the number of vertical wavelet splits for
the current stage. The normal value for this field is 2 and would result
in vertically lowpass and highpass downsampled versions of the input to
this stage. A value of 1 indicates that filtering and downsampling
should not be performed in the vertical direction in this stage.
`horiz_limit' indicates the number of horizontal wavelet splits for
the current stage. The normal value for this field is 2 and would result
in horizontally lowpass and highpass downsampled versions of the input to
this stage. A value of 1 indicates that filtering and downsampling
should not be performed in the horizontal direction in this stage.
SAIC General Decomp. End */
/*****************************************************************************/
/* hplx_analysis_leaf_obj */
/*****************************************************************************/
typedef
struct hplx_analysis_leaf_obj {
hplx_analysis_stage_obj base;
float *conversion_buf;
} hplx_analysis_leaf_obj, *hplx_analysis_leaf_ref;
/* This structure defines the state of the `hplx_analysis_leaf' object,
which extends the `hplx_analysis_stage' object and appears at the leaf
nodes of all decomposition trees, as discussed in the comments appearing
with the definition of `hplx_analysis_stage_obj'. The object has a
single extra member variable, `conversion_buf' which points to a buffer
used to perform fixed to floating point conversions; the buffer is
allocated only on demand. */
/*****************************************************************************/
/* hplx_analysis_obj */
/*****************************************************************************/
typedef
struct hplx_analysis_obj {
analysis_obj base;
forward_info_ref info;
quantizer_ref quantizer;
int num_components;
int current_tnum;
hplx_analysis_stage_ref *components;
int usePsExtension;
/* OTLPF_CONVENTION begin; JX Wei ADFA, WJ Zeng Sharp */
int otlpf_convention;
/* OTLPF_CONVENTION end; JX Wei ADFA, WJ Zeng Sharp */
/* SAIC/Sharp/Fuji Xmask begin */
encoder_ref encoder;
float *alpha;
float *beta;
int *minlevel;
int *win_width;
int *bits_retained;
int *respect_block_boundaries;
/* SAIC/Sharp/Fuji Xmask end */
int *sso_ext;
} hplx_analysis_obj;
/* Manages state for the externally visible `analysis' object.
The `components' array holds one entry for each image component.
Even if the component has no decomposition at all, the entry will not
be NULL; in this case, it will reference a single `hplx_analysis_leaf'
object which is responsible for pushing lines of subband samples into
the quantizer directly.
The `sso_dwt' array contains NT elements, where N is the number
of image components and T is the number of tiles. The entry with
index n+Nt holds a flag indicating whether or not the SSO-DWT extension
policy should be applied to the boundaries of tile t in image
component n. */
#endif /* HPLX_ANALYSIS_LOCAL_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -