⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hplx_analysis_local.h

📁 JPEG2000实现的源码
💻 H
📖 第 1 页 / 共 2 页
字号:
    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 + -