📄 ebcot_common.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 Reservedi 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_SYMBOLSextern 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_COSTextern 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 + -