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

📄 markers.h

📁 JPEG2000实现的源码
💻 H
字号:
/*****************************************************************************/
/* Copyright 1998, Hewlett-Packard Company                                   */
/* All rights reserved                                                       */
/* File: "markers.h"                                                         */
/* Description: Contains macro definitions for all markers and marker        */
/*              elements, as well as all temporary CME marker tag vaues.     */
/*              No values should be used except those which are recorded     */
/*              in this file, so that those markers and CME tags which are   */
/*              currently in use may be traced down and modified as          */
/*              necessary.                                                   */
/* Author: David Taubman                                                     */
/* Affiliation: Hewlett-Packard and                                          */
/*              The University of New South Wales, Australia                 */
/* Version: VM9.0                                                            */
/* Last Revised: 27 April, 2001                                              */
/*****************************************************************************/

/*****************************************************************************/
/* Modified by David Taubman to implement changes in Tokyo between CD and    */
/* FCD for Part-1 of the standard.  Copyrighted by HP with all rights        */
/* reserved for the modified parts.                                          */
/*****************************************************************************/

/*****************************************************************************/
/* Modified for general offset and scalar quantization.                      */
/* Copyright 2000 The MITRE Corporation.                                     */
/* All Rights Reserved for modified parts.                                   */
/*****************************************************************************/

#ifndef MARKERS_H
#define MARKERS_H

/* ========================================================================= */
/* --------------- Temporary CME Tag Values (RCME) in Use ------------------ */
/* ========================================================================= */

#define CME_COMMENT 0x0001
#define CME_PSE     0x1010

/* ========================================================================= */
/* -------------------- Marker Codes and Element ID's ---------------------- */
/* ========================================================================= */

/* Delimiting Markers */

#define MARKER_SOC 0xFF4F /* Start of codestream */
#define MARKER_SOT 0xFF90 /* Start of tile-part */
#define MARKER_SOD 0xFF93 /* Start of data packets */
#define MARKER_EOC 0xFFD9 /* End of image */

/* Fixed Information Marker Segments */

#define MARKER_SIZ 0xFF51 /* Canvas, component and tile dimensions. */
#define ELTID_SIZ_X  0x01
#define MARKER_SIZ_X   "\x51\x01" "XSiz (width of reference grid)"
#define ELTID_SIZ_Y  0x02
#define MARKER_SIZ_Y   "\x51\x02" "YSiz (height of reference grid)"
#define ELTID_SIZ_XO  0x03
#define MARKER_SIZ_XO  "\x51\x03" "XOSiz (horizontal offset of image)"
#define ELTID_SIZ_YO  0x04
#define MARKER_SIZ_YO  "\x51\x04" "YOSiz (vertical offset of image)"
#define ELTID_SIZ_XT  0x11
#define MARKER_SIZ_XT  "\x51\x11" "XTSiz (width of one reference tile)"
#define ELTID_SIZ_YT  0x12
#define MARKER_SIZ_YT  "\x51\x12" "YTSiz (height of one reference tile)"
#define ELTID_SIZ_XTO  0x13
#define MARKER_SIZ_XTO "\x51\x13" "XTOSiz (horizontal tiling offset)"
#define ELTID_SIZ_YTO  0x14
#define MARKER_SIZ_YTO "\x51\x14" "YTOSiz (vertical tiling offset)"
#define ELTID_SIZ_C  0x21
#define MARKER_SIZ_C   "\x51\x21" "CSiz (number of image components)"
#define ELTID_SIZ_S  0x23
#define MARKER_SIZ_S   "\x51\x23" "Component precision information"
#define ELTID_SIZ_XR  0x24
#define MARKER_SIZ_XR  "\x51\x24" "Horizontal sub-sampling factors"
#define ELTID_SIZ_YR  0x25
#define MARKER_SIZ_YR  "\x51\x25" "Vertical sub-sampling factors"

/* Functional Marker Segments */

#define MARKER_POC 0xFF5F /* Progression order change. */
#define ELTID_POC_CHANGES  0x01
#define MARKER_POC_CHANGES "\x5F\x01" "Progression order change"


#define MARKER_COD 0xFF52 /* Coding style default; most elements should be
                             constructed automatically from the COC elements
                             inside the stream object. */
#define ELTID_COD_LAYERS  0x01
#define MARKER_COD_LAYERS  "\x52\x01" "Number of quality layers"
#define ELTID_COD_PROG  0x02
#define MARKER_COD_PROG    "\x52\x02" "Progression style (default)"
#define ELTID_COD_SOP  0x11
#define MARKER_COD_SOP     "\x52\x11" "Start-of-packet (SOP) markers used?"
#define ELTID_COD_EPH  0x12
#define MARKER_COD_EPH     "\x52\x12" "End-of-packet-head (EPH) markers used?"
#define ELTID_COD_CXFORM  0x22
#define MARKER_COD_CXFORM  "\x52\x22" "Multiple component transform used"

#define MARKER_COC 0xFF53 /* Coding style per component */
#define ELTID_COC_LEVELS  0x01
#define MARKER_COC_LEVELS "\x53\x01" "Number of decomposition levels"
#define ELTID_COC_DECOMP  0x02
#define MARKER_COC_DECOMP "\x53\x02" "Part-2 decomposition structure"
#define ELTID_COC_REV  0x03
#define MARKER_COC_REV    "\x53\x03" "Wavelet decomposition reversible?"
#define ELTID_COC_KERNEL  0x04
#define MARKER_COC_KERNEL "\x53\x04" "Part-2 kernel options"
#define ELTID_COC_SUPP  0x05
#define MARKER_COC_SUPP   "\x53\x05" "Part-2 user-defined kernel supports"
#define ELTID_COC_TAPS  0x06
#define MARKER_COC_TAPS   "\x53\x06" "Part-2 user-defined kernel taps"
#define ELTID_COC_XCB  0x11
#define MARKER_COC_XCB    "\x53\x11" "XCB (Code-block width <= 2^{XCB+2})"
#define ELTID_COC_YCB  0x12
#define MARKER_COC_YCB    "\x53\x12" "YCB (Code-block height <= 2^{YCB+2})"
#define ELTID_COC_PPX  0x13
#define MARKER_COC_PPX    "\x53\x13" "PPX (Packet partition width = 2^PPX)"
#define ELTID_COC_PPY  0x14
#define MARKER_COC_PPY    "\x53\x14" "PPY (Packet partition height = 2^PPY)"
#define ELTID_COC_XCL  0x21
#define MARKER_COC_XCL    "\x53\x21" "XCL (Cell width = 2^XCL)"
#define ELTID_COC_YCL  0x22
#define MARKER_COC_YCL    "\x53\x22" "YCL (Cell height = 2^YCL)"
#define ELTID_COC_XAP  0x23
#define MARKER_COC_XAP    "\x53\x23" "XAP (Horizontal partition anchor point)"
#define ELTID_COC_YAP  0x24
#define MARKER_COC_YAP    "\x53\x24" "YAP (Vertical partition anchor point)"
#define ELTID_COC_CCB  0x25
#define MARKER_COC_CCB    "\x53\x25" "Code-blocks respect cell boundaries?"
#define ELTID_COC_SSOX  0x26
#define MARKER_COC_SSOX   "\x53\x26" "Num lowest levels using hor SSO-DWT"
#define ELTID_COC_SSOY  0x27
#define MARKER_COC_SSOY   "\x53\x27" "Num lowest levels using vert SSO-DWT"
#define ELTID_COC_MOD  0x31
#define MARKER_COC_MOD    "\x53\x31" "Entropy coder mode flags"
#define ELTID_COC_OVLP  0x34
#define MARKER_COC_OVLP   "\x53\x34" "Tile boundary overlap flags"
#define ELTID_COC_SSOEXT  0x36
#define MARKER_COC_SSOEXT "\x53\x36" "Use SSO-DWT style boundary extension"

#define MARKER_QCD 0xFF5C
#define ELTID_QCD_WHICH  0x01
#define MARKER_QCD_WHICH  "\x5C\x01" "Type of quantization (DZQ,MASK,TCQ,...)"
#define ELTID_QCD_PWLN  0x11
#define MARKER_QCD_PWLN   "\x5C\x11" "Number of points in PWL MASK curve"
#define ELTID_QCD_PWLOFF  0x12
#define MARKER_QCD_PWLOFF "\x5C\x12" "Offset in masking"
#define ELTID_QCD_PWLRM  0x13
#define MARKER_QCD_PWLRM  "\x5C\x13" "Range max in masking"
#define ELTID_QCD_PWLLEV  0x14
#define MARKER_QCD_PWLLEV "\x5C\x14" "Max level in masking"
#define ELTID_QCD_PWLOO  0x15
#define MARKER_QCD_PWLOO  "\x5C\x15" "Orienoff in masking"
#define ELTID_QCD_PWLDAT  0x16
#define MARKER_QCD_PWLDAT "\x5C\x16" "(x,y) corner pairs for PWL MASK curve"


#define MARKER_QCC 0xFF5D /* Quantization; QCD default markers should be
                             created automatically in the stream object
                             after determining the differences between the
                             QCC markers for each component. */
#define ELTID_QCC_GUARD  0x01
#define MARKER_QCC_GUARD  "\x5D\x01" "Number of guard bits"
#define ELTID_QCC_TYPE  0x02
#define MARKER_QCC_TYPE  "\x5D\x02" "Type of Quantization"
#define ELTID_QCC_REV   0x11
#define MARKER_QCC_REV    "\x5D\x11" "Reversible dynamic range params (mu)"
#define ELTID_QCC_STEP  0x12
#define MARKER_QCC_STEP   "\x5D\x12" "Quant step/range params (mu,epsilon)"
#define ELTID_QCC_NZ    0x13
#define MARKER_QCC_NZ     "\x5D\x13" "General Quant NZ scale factor"
#define ELTID_QCC_CSFW  0x21
#define MARKER_QCC_CSFW   "\x5D\x21" "CSF weights for each subband"


#define MARKER_RGN 0xFF5E /* Region of interest marker; at most one may
                             appear per image component, within any scope
                             (global or tile header). */
#define ELTID_RGN_BOOSTS  0x11
#define MARKER_RGN_BOOSTS "\x5E\x11" "Region boost values (rect rgns first)"
#define ELTID_RGN_RECTS  0x12
#define MARKER_RGN_RECTS  "\x5E\x12" "Rect region coords (4 at a time)"
#define ELTID_RGN_CIRCS  0x13
#define MARKER_RGN_CIRCS  "\x5E\x13" "Circular region coords (3 at a time)"

/* Pointer marker segments. */

#define MARKER_TLM 0xFF55 /* Tile lengths main header. */

#define MARKER_PLM 0xFF57 /* Packet lengths main header. */

#define MARKER_PLT 0xFF58 /* Packet lengths tile-part header. */

#define MARKER_PPM 0xFF60 /* Packed packet headers main header. */

#define MARKER_PPT 0xFF61 /* Packed packet headers tile-part header. */

/* In-data markers. */

#define MARKER_SOP 0xFF91 /* Start of packet. */
#define MARKER_EPH 0xFF92 /* End of packet head. */

/* Informational marker segments. */

#define MARKER_CME 0xFF64 /* Comment and Extension marker. */
#define MARKER_CRG 0xFF63 /* Component Registration marker. */

/* MITRE General Offset Begin */
#define MARKER_DCO 0xFF70
#define ELTID_DCO_VALUE  0x70
#define MARKER_DCO_VALUE   "\x70\x02" "DC Offset values"

/* Begin Aerospace MCT mods (TSW) */
#define MARKER_MCT 0xFF74
#define ELTID_MCT_IX 0x01
#define MARKER_MCT_IX "\x74\x01" "Transform Matrix Index"
#define ELTID_MCT_TYP 0x02
#define MARKER_MCT_TYP "\x74\x02" "Transform Matrix Type"
#define ELTID_MCT_DT 0x03
#define MARKER_MCT_DT "\x74\x03" "Matrix Entries Type"
#define ELTID_MCT_SP 0x11
#define MARKER_MCT_SP "\x74\x11" "Transform Matrix Values"

#define MARKER_CBD 0xFF78
#define ELTID_CBD_N 0x01
#define MARKER_CBD_N "\x78\x01" "Number of Component Bitdepths"
#define ELTID_CBD_BD 0x11
#define MARKER_CBD_BD "\x78\x11" "Component Bitdepth Values"

#define MARKER_MCC 0xFF75
#define ELTID_MCC_XMX 0x01
#define MARKER_MCC_XMX "\x75\x01" "Decorrel Xform Type"
#define ELTID_MCC_XWDO 0x02
#define MARKER_MCC_XWDO "\x75\x02" "Wavelet Decorrel Offset Matrix Index"
#define ELTID_MCC_NMCS 0x03
#define MARKER_MCC_NMCS "\x75\x03" "Decorrel Input Indices Size"
#define ELTID_MCC_NMCN 0x04
#define MARKER_MCC_NMCN "\x75\x04" "Decorrel Number of Inputs"
#define ELTID_MCC_MMCS 0x05
#define MARKER_MCC_MMCS "\x75\x05" "Decorrel Output Indices Size"
#define ELTID_MCC_MMCN 0x06
#define MARKER_MCC_MMCN "\x75\x06" "Decorrel Number of Outputs"
#define ELTID_MCC_TMCX 0x07
#define MARKER_MCC_TMCX "\x75\x07" "Decorrel Matrix or ATK Index"
#define ELTID_MCC_TMCO 0x08
#define MARKER_MCC_TMCO "\x75\x08" "Decorrel Offset or ADS Index"
#define ELTID_MCC_CMC 0x11
#define MARKER_MCC_CMC "\x75\x11" "Decorrel Input Component List"
#define ELTID_MCC_WMC 0x12
#define MARKER_MCC_WMC "\x75\x12" "Decorrel Output Component List"
#define ELTID_MCC_IX 0x21
#define MARKER_MCC_IX "\x75\x21" "MCC Marker Index"

#define MARKER_MIC 0xFF77
#define ELTID_MIC_NMCS 0x03
#define MARKER_MIC_NMCS "\x77\x03" "Depend Input Indices Size"
#define ELTID_MIC_NMCN 0x04
#define MARKER_MIC_NMCN "\x77\x04" "Depend Number of Inputs"
#define ELTID_MIC_MMCS 0x05
#define MARKER_MIC_MMCS "\x77\x05" "Depend Output Indices Size"
#define ELTID_MIC_MMCN 0x06
#define MARKER_MIC_MMCN "\x77\x06" "Depend Number of Outputs"
#define ELTID_MIC_TMCX 0x07
#define MARKER_MIC_TMCX "\x77\x07" "Depend Matrix Index"
#define ELTID_MIC_TMCO 0x08
#define MARKER_MIC_TMCO "\x77\x08" "Depend Offset Index"
#define ELTID_MIC_CMC 0x11
#define MARKER_MIC_CMC "\x77\x11" "Depend Input Component List"
#define ELTID_MIC_WMC 0x12
#define MARKER_MIC_WMC "\x77\x12" "Depend Output Component List"
#define ELTID_MIC_IX 0x21
#define MARKER_MIC_IX "\x77\x21" "MIC Marker Index"
/* End Aerospace MCT mods */

/* SAIC/Sharp/Fuji Xmask begin */
#define MARKER_VMS 0xFF71
#define ELTID_VMS_S 0x01
#define MARKER_VMS_S "\x71\x01" "Min res. level and respect block boundaries"
#define ELTID_VMS_W 0x02
#define MARKER_VMS_W "\x71\x02" "Window width"
#define ELTID_VMS_R 0x03
#define MARKER_VMS_R "\x71\x03" "Bits retained"
#define ELTID_VMS_A 0x04
#define MARKER_VMS_A "\x71\x04" "Alpha"
#define ELTID_VMS_B 0x05
#define MARKER_VMS_B "\x71\x05" "Beta"
/* SAIC/Sharp/Fuji Xmask end */

#endif /* MARKERS_H */


⌨️ 快捷键说明

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