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

📄 ebcot_constants.h

📁 关于视频压缩的jpeg2000压缩算法,C编写
💻 H
字号:
/*****************************************************************************//* Copyright 1998, Hewlett-Packard Company                                   *//* All rights reserved                                                       *//* File: "ebcot_constants.h"                                                 *//* Description: Constants which configure the EBCOT encoder and decoder      *//* Author: David Taubman                                                     *//* Affiliation: Hewlett-Packard and                                          *//*              The University of New South Wales, Australia                 *//* Version: VM6.0                                                            *//* Last Revised: 19 January, 2000                                            *//*****************************************************************************//*****************************************************************************//* Modified to incorporate MQ-coder by Mitsubishi Electric Corp.             *//* Copyright 1999, Mitsubishi Electric Corp.                                 *//* All rights reserved for modified parts                                    *//*****************************************************************************//*****************************************************************************//* 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.                                  *//*****************************************************************************//*****************************************************************************//* Modified by David Taubman to support interface modifications, arbitrary   *//* changes in coding parameters from component to component and from tile    *//* to tile, packet partitions, rich packet sequencing conventions and to     *//* support the full generality of PART-1 of the JPEG2000                     *//* standard, and to support most anticipated generality of PART-2.  Changes  *//* are too numerous to flag individually within the code, which in some      *//* places has been completely rewritten.  All changes copyrighted by HP with *//* all rights reserved for the modified parts.                               *//*****************************************************************************/#ifndef EBCOT_CONSTANTS_H#define EBCOT_CONSTANTS_H#include <ifc.h>/* ========================================================================= *//* ------------------------- Configuration Constants ----------------------- *//* ========================================================================= *//* #define EBCOT_COUNT_SYMBOLS */ /* Uncomment this to get the algorithm to                                     count and report the number of encoded                                     and decoded binary symbols. *//* #define REPORT_LENGTH_SIGNALLING_COST  */ /* Uncomment this to get a report                                     of the average number of bits required                                     to signal the length of each sub-bitplane                                     coding pass.                                     NOTE: Reports are meaningful only                                     with non-scalable or SNR progressive                                     bit-streams with the -trunc option. */#define EBCOT_CPU_ITERATIONS 5 /* ========================================================================= *//* ---------------------------- Context Assignment ------------------------- *//* ========================================================================= */#define TL_POS      0 /* Bit-pos for significance of top-left neighbour      */#define TC_POS      1 /* Bit-pos for significance of top-centre neighbour    */#define TR_POS      2 /* Bit-pos for significance of top-right neighbour     */#define CL_POS      3 /* Bit-pos for significance of centre-left neighbour   */#define CR_POS      4 /* Bit-pos for significance of centre-right neighbour  */#define BL_POS      5 /* Bit-pos for significance of bottom-left neighbour   */#define BC_POS      6 /* Bit-pos for significance of bottom-centre neighbour */#define BR_POS      7 /* Bit-pos for significance of bottom-right neighbour  */#define SELF_POS    9  /* Bit-pos for significance of the current sample. */#define REFINED_POS 10 /* Bit-pos indicating whether or not the sample has                          been refined to the next bit-plane yet. */#define V_PVE_POS 11 /* Bit-pos indicating >=1 +ve vertical neighbour   */#define V_NVE_POS 12 /* Bit-pos indicating >=1 -ve vertical neighbour   */#define H_PVE_POS 13 /* Bit-pos indicating >=1 +ve horizontal neighbour */#define H_NVE_POS 14 /* Bit-pos indicating >=1 -ve horizontal neighbour */#define OUT_OF_BOUNDS_POS 15 /* May be used to identify context words which                                lie beyond the boundaries of the code block */#define TL_SIG        ((std_short)(1<<TL_POS))#define TC_SIG        ((std_short)(1<<TC_POS))#define TR_SIG        ((std_short)(1<<TR_POS))#define CL_SIG        ((std_short)(1<<CL_POS))#define CR_SIG        ((std_short)(1<<CR_POS))#define BL_SIG        ((std_short)(1<<BL_POS))#define BC_SIG        ((std_short)(1<<BC_POS))#define BR_SIG        ((std_short)(1<<BR_POS))#define SELF_SIG      ((std_short)(1<<SELF_POS))#define IS_REFINED    ((std_short)(1<<REFINED_POS))#define V_PVE_SIG     ((std_short)(1<<V_PVE_POS))#define V_NVE_SIG     ((std_short)(1<<V_NVE_POS))#define H_PVE_SIG     ((std_short)(1<<H_PVE_POS))#define H_NVE_SIG     ((std_short)(1<<H_NVE_POS))#define OUT_OF_BOUNDS ((std_short)(1<<OUT_OF_BOUNDS_POS))#define SIGN_POS V_PVE_POS /* Initial bit-pos for 4-bit sign context word. */#define ZC_MASK ((std_short)(~((-1) << 8))) /* Zero-coding LUT index mask. */#define AGG_CONTEXTS  1 /* Num context states devoted to aggregated zeros. */#define ZC_CONTEXTS   9 /* Num context states devoted to zero coding. */#define MAG_CONTEXTS  3 /* Num context states devoted to mag refinement. */#define SC_CONTEXTS   5 /* Num context states devoted to sign coding. */#define AGG_OFFSET 0#define ZC_OFFSET (AGG_OFFSET+AGG_CONTEXTS)#define MAG_OFFSET (ZC_OFFSET + ZC_CONTEXTS)#define SC_OFFSET (MAG_OFFSET + MAG_CONTEXTS)#define UNI_CONTEXTS  1 /* Num context states devoted to uniform coding. */#define UNI_OFFSET (SC_OFFSET + SC_CONTEXTS)#define EBCOT_TOTAL_CONTEXTS (UNI_OFFSET+UNI_CONTEXTS)#define INIT_MQSTATE      (2*0+0) /* Start of the learning curve. */#define UNI_INIT_MQSTATE  (2*46+0)/* Non-adaptive uniform probability state. */#define ZERO_INIT_MQSTATE (2*4+0) /* Skewed initial state on learning curve */#define RUN_INIT_MQSTATE  (2*3+0) /* Slightly skewed state on learning curve *//* ========================================================================= *//* -------------------------- Block Coding Structure ----------------------- *//* ========================================================================= */#define PASSES_PER_BITPLANE 3#define MAX_PASSES ((IMPLEMENTATION_PRECISION-2)*PASSES_PER_BITPLANE+1)#define LAZY_TAIL_START 3 /* Number of bit-planes after the first significant                             bit-plane for the code-block in which the lazy                             coding policy is started. *//* ========================================================================= *//* ----------------------------- MSE Computations -------------------------- *//* ========================================================================= */#define MSE_LUT_BITS 7#define MSE_LUT_MASK ((std_short)(~((-1)<<MSE_LUT_BITS)))/* ========================================================================= *//* --------------------------- Architecture Specific ----------------------- *//* ========================================================================= */#define VM_LITTLE_ENDIAN /* Uncomment if your architecture is LITTLE_ENDIAN. */#ifndef VM_LITTLE_ENDIAN#  define VM_BIG_ENDIAN#endif#ifdef VM_LITTLE_ENDIAN /* Packed context flags for little-endian architectures */#  define TL_POS_0              TL_POS#  define TC_POS_0              TC_POS#  define TR_POS_0              TR_POS#  define CL_POS_0              CL_POS#  define CR_POS_0              CR_POS#  define BL_POS_0              BL_POS#  define BC_POS_0              BC_POS#  define BR_POS_0              BR_POS#  define SELF_POS_0            SELF_POS#  define REFINED_POS_0         REFINED_POS#  define V_PVE_POS_0           V_PVE_POS#  define V_NVE_POS_0           V_NVE_POS#  define H_PVE_POS_0           H_PVE_POS#  define H_NVE_POS_0           H_NVE_POS#  define OUT_OF_BOUNDS_POS_0   OUT_OF_BOUNDS_POS#  define ZC_SHIFT_0            0#  define TL_POS_1              (TL_POS + 16)#  define TC_POS_1              (TC_POS + 16)#  define TR_POS_1              (TR_POS + 16)#  define CL_POS_1              (CL_POS + 16)#  define CR_POS_1              (CR_POS + 16)#  define BL_POS_1              (BL_POS + 16)#  define BC_POS_1              (BC_POS + 16)#  define BR_POS_1              (BR_POS + 16)#  define SELF_POS_1            (SELF_POS + 16)#  define REFINED_POS_1         (REFINED_POS + 16)#  define V_PVE_POS_1           (V_PVE_POS + 16)#  define V_NVE_POS_1           (V_NVE_POS + 16)#  define H_PVE_POS_1           (H_PVE_POS + 16)#  define H_NVE_POS_1           (H_NVE_POS + 16)#  define OUT_OF_BOUNDS_POS_1   (OUT_OF_BOUNDS_POS + 16)#  define ZC_SHIFT_1            16#endif /* VM_LITTLE_ENDIAN */#if(1)#ifdef VM_BIG_ENDIAN /* Packed context flags for big-endian architectures */#  define TL_POS_1              TL_POS#  define TC_POS_1              TC_POS#  define TR_POS_1              TR_POS#  define CL_POS_1              CL_POS#  define CR_POS_1              CR_POS#  define BL_POS_1              BL_POS#  define BC_POS_1              BC_POS#  define BR_POS_1              BR_POS#  define SELF_POS_1            SELF_POS#  define REFINED_POS_1         REFINED_POS#  define V_PVE_POS_1           V_PVE_POS#  define V_NVE_POS_1           V_NVE_POS#  define H_PVE_POS_1           H_PVE_POS#  define H_NVE_POS_1           H_NVE_POS#  define OUT_OF_BOUNDS_POS_1   OUT_OF_BOUNDS_POS#  define ZC_SHIFT_1            0#  define TL_POS_0              (TL_POS + 16)#  define TC_POS_0              (TC_POS + 16)#  define TR_POS_0              (TR_POS + 16)#  define CL_POS_0              (CL_POS + 16)#  define CR_POS_0              (CR_POS + 16)#  define BL_POS_0              (BL_POS + 16)#  define BC_POS_0              (BC_POS + 16)#  define BR_POS_0              (BR_POS + 16)#  define SELF_POS_0            (SELF_POS + 16)#  define REFINED_POS_0         (REFINED_POS + 16)#  define V_PVE_POS_0           (V_PVE_POS + 16)#  define V_NVE_POS_0           (V_NVE_POS + 16)#  define H_PVE_POS_0           (H_PVE_POS + 16)#  define H_NVE_POS_0           (H_NVE_POS + 16)#  define OUT_OF_BOUNDS_POS_0   (OUT_OF_BOUNDS_POS + 16)#  define ZC_SHIFT_0            16#endif /* VM_BIG_ENDIAN */#endif#define TL_SIG_0              ((std_int)(1<<TL_POS_0))#define TC_SIG_0              ((std_int)(1<<TC_POS_0))#define TR_SIG_0              ((std_int)(1<<TR_POS_0))#define CL_SIG_0              ((std_int)(1<<CL_POS_0))#define CR_SIG_0              ((std_int)(1<<CR_POS_0))#define BL_SIG_0              ((std_int)(1<<BL_POS_0))#define BC_SIG_0              ((std_int)(1<<BC_POS_0))#define BR_SIG_0              ((std_int)(1<<BR_POS_0))#define SELF_SIG_0            ((std_int)(1<<SELF_POS_0))#define IS_REFINED_0          ((std_int)(1<<REFINED_POS_0))#define V_PVE_SIG_0           ((std_int)(1<<V_PVE_POS_0))#define V_NVE_SIG_0           ((std_int)(1<<V_NVE_POS_0))#define H_PVE_SIG_0           ((std_int)(1<<H_PVE_POS_0))#define H_NVE_SIG_0           ((std_int)(1<<H_NVE_POS_0))#define OUT_OF_BOUNDS_0       ((std_int)(1<<OUT_OF_BOUNDS_POS_0))#define SIGN_POS_0            V_PVE_POS_0#define ZC_MASK_0             (((std_int) 0x000000FF)<<ZC_SHIFT_0)#define TL_SIG_1              ((std_int)(1<<TL_POS_1))#define TC_SIG_1              ((std_int)(1<<TC_POS_1))#define TR_SIG_1              ((std_int)(1<<TR_POS_1))#define CL_SIG_1              ((std_int)(1<<CL_POS_1))#define CR_SIG_1              ((std_int)(1<<CR_POS_1))#define BL_SIG_1              ((std_int)(1<<BL_POS_1))#define BC_SIG_1              ((std_int)(1<<BC_POS_1))#define BR_SIG_1              ((std_int)(1<<BR_POS_1))#define SELF_SIG_1            ((std_int)(1<<SELF_POS_1))#define IS_REFINED_1          ((std_int)(1<<REFINED_POS_1))#define V_PVE_SIG_1           ((std_int)(1<<V_PVE_POS_1))#define V_NVE_SIG_1           ((std_int)(1<<V_NVE_POS_1))#define H_PVE_SIG_1           ((std_int)(1<<H_PVE_POS_1))#define H_NVE_SIG_1           ((std_int)(1<<H_NVE_POS_1))#define OUT_OF_BOUNDS_1       ((std_int)(1<<OUT_OF_BOUNDS_POS_1))#define SIGN_POS_1            V_PVE_POS_1#define ZC_MASK_1             (((std_int) 0x000000FF)<<ZC_SHIFT_1)/* ========================================================================= *//* -------------------------------- Mode Flags ----------------------------- *//* ========================================================================= */#define MODE_FLAG_LAZY       ((std_byte)(1<<0))#define MODE_FLAG_RESET      ((std_byte)(1<<1))#define MODE_FLAG_TERMINATE  ((std_byte)(1<<2))#define MODE_FLAG_CAUSAL     ((std_byte)(1<<3))#define MODE_FLAG_ERTERM     ((std_byte)(1<<4))#define MODE_FLAG_SEGMARK    ((std_byte)(1<<5))/* ========================================================================= *//* --------------------------- Available Progressions ---------------------- *//* ========================================================================= */#define LAYER_PROGRESSIVE                0#define RESOLUTION_LAYER_PROGRESSIVE     1#define RESOLUTION_POSITION_PROGRESSIVE  2#define POSITION_COMPONENT_PROGRESSIVE   3#define COMPONENT_POSITION_PROGRESSIVE   4/* ========================================================================= *//* ------------------------------- Approximations -------------------------- *//* ========================================================================= */#define ESTIMATED_HEADER_BYTES 200#endif /* EBCOT_CONSTANTS_H */

⌨️ 快捷键说明

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