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

📄 ebcot_common.h

📁 JPEG2000实现的源码
💻 H
字号:
/*****************************************************************************/
/* Copyright 1998, Hewlett-Packard Company                                   */
/* All rights reserved                                                       */
/* File: "ebcot_common.h"                                                    */
/* Description: Common header file for EBCOT encoder and decoder             */
/* Author: David Taubman                                                     */
/* Affiliation: Hewlett-Packard and                                          */
/*              The University of New South Wales, Australia                 */
/* Version: VM5.0                                                            */
/* Last Revised: 1 August, 1999                                              */
/*****************************************************************************/

/*****************************************************************************/
/* Modified to combine entropy coders                                        */
/* Copyright 1999 Science Applications International Corporation (SAIC).     */
/* Copyright 1999 University of Arizona, Arizona Board of Regents.           */
/* All Rights Reserved for modified parts.                                   */
/*****************************************************************************/

#ifndef EBCOT_COMMON_H
#define EBCOT_COMMON_H
#include <limits.h>
#include <dst_arith_coder_common.h>
#include "ebcot_constants.h"

#define EBCOT_MEM_KEY "CODING OBJECT MEMORY (we can eliminate most of this)"

/* ========================================================================= */
/* ------------------------- Read-Only Lookup Tables ----------------------- */
/* ========================================================================= */

extern std_byte ebcot_horz_zc_lut[ZC_MASK+1];
extern std_byte ebcot_vert_zc_lut[ZC_MASK+1];
extern std_byte ebcot_diag_zc_lut[ZC_MASK+1];
extern ifc_int ebcot_sc_lut[16];
extern std_short ebcot_initial_mse_lut[(1<<MSE_LUT_BITS)];
extern std_short ebcot_refinement_mse_lut[(1<<MSE_LUT_BITS)];
extern std_short ebcot_lossless_initial_mse_lut[(1<<MSE_LUT_BITS)];
extern std_short ebcot_lossless_refinement_mse_lut[(1<<MSE_LUT_BITS)];
extern dst_context_state initial_mq_contexts[EBCOT_TOTAL_CONTEXTS];

/* ========================================================================= */
/* ------------ Counting Configurations (for development only) ------------- */
/* ========================================================================= */

#ifdef EBCOT_COUNT_SYMBOLS
extern int ebcot_total_symbol_count;

#define _addto_symbol_count(_incr_) ebcot_total_symbol_count += _incr_;
#else
#define _addto_symbol_count(_incr_)
#endif /* EBCOT_COUNT_SYMBOLS */

#ifdef REPORT_LENGTH_SIGNALLING_COST
extern int ebcot_total_length_signalling_bits;
extern int ebcot_total_length_signalled_passes;
#endif /* REPORT_LENGTH_SIGNALLING_COST */


/* ========================================================================= */
/* ---------------------------- Internal Objects --------------------------- */
/* ========================================================================= */

typedef struct sample_buffer_heap_obj *sample_buffer_heap_ref;

typedef ifc_int *(*sample_buffer_heap__get_buffer__func)
  (sample_buffer_heap_ref self);
typedef void (*sample_buffer_heap__return_buffer__func)
  (sample_buffer_heap_ref self, ifc_int *buffer);
typedef void (*sample_buffer_heap__terminate__func)
  (sample_buffer_heap_ref self);

/*****************************************************************************/
/*                           sample_buffer_heap_obj                          */
/*****************************************************************************/

typedef
  struct sample_buffer_heap_obj {
    sample_buffer_heap__get_buffer__func get_buffer;
    sample_buffer_heap__return_buffer__func return_buffer;
    sample_buffer_heap__terminate__func terminate;
    int max_rows, row_gap;
    int max_buffers, num_buffers, free_buffers;
    ifc_int **buffers;
  } sample_buffer_heap_obj;

  /* This structure represents an object in the same style as those defined
     in the public interface header, "line_block_ifc.h", which is responsible
     for managing allocation and recycling of sample buffers to ensure an
     efficient implementation of the `push_block' and `pull_block' interface
     functions.
         The `buffers' array has `max_buffers' entries, of which the first
     `free_buffers' entries contain valid pointers to sample buffers which
     are not currently in use.  The `num_buffers' field holds the total
     number of buffers which have been allocated. */

/* ========================================================================= */
/* --------------------------- External Functions -------------------------- */
/* ========================================================================= */

extern void
  ebcot_initialize_global_luts(void);

extern sample_buffer_heap_ref
  ebcot_create_sample_buffer_heap(int max_rows, int row_gap);

#endif /* EBCOT_COMMON_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -