📄 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 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 + -