dataStruct.hpp
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:20k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*************************************************************************
  2. This software module was originally developed by 
  3. in the course of development of the MPEG-4 Video (ISO/IEC 14496-2). 
  4. This software module is an implementation of a part of one or more MPEG-4 Video tools 
  5. as specified by the MPEG-4 Video. 
  6. ISO/IEC gives users of the MPEG-4 Video free license to this software module or modifications 
  7. thereof for use in hardware or software products claiming conformance to the MPEG-4 Video. 
  8. Those intending to use this software module in hardware or software products are advised that its use may infringe existing patents. 
  9. The original developer of this software module and his/her company, 
  10. the subsequent editors and their companies, 
  11. and ISO/IEC have no liability for use of this software module or modifications thereof in an implementation. 
  12. Copyright is not released for non MPEG-4 Video conforming products. 
  13. Microsoft retains full right to use the code for his/her own purpose, 
  14. assign or donate the code to a third party and to inhibit third parties from using the code for non <MPEG standard> conforming products. 
  15. This copyright notice must be included in all copies or derivative works. 
  16. Copyright (c) 1996, 1997, 1998.
  17. Module Name:
  18. vtcEnc.hpp
  19. Abstract:
  20. Encoder for one still image using wavelet VTC.
  21. Revision History:
  22. *************************************************************************/
  23. #ifndef __VTCENC_HPP_ 
  24. #define __VTCENC_HPP_
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #include <math.h>
  28. #include <assert.h>
  29. #include "basic.hpp"
  30. #include "quant.hpp"
  31. #include "ac.hpp"
  32. //#include "context.hpp"
  33. #include "dwt.h"
  34. /* for bilevel mode */
  35. #include "PEZW_ac.hpp"
  36. #include "wvtPEZW.hpp"
  37. #include "PEZW_zerotree.hpp"
  38. #include "PEZW_mpeg4.hpp"
  39. #ifdef DATA
  40. #undef DATA
  41. #endif
  42. #define DATA        Short
  43. #define MAXLEV      12
  44. #define NCOLOR      3
  45. #define SINGLE_Q    1
  46. #define MULTIPLE_Q  2
  47. #define BILEVEL_Q   3
  48. /* zero tree symbols - if changed please change MapTypeToText variable */
  49. #define IZ       0  /* Isolated Zero */
  50. #define VAL      1  /* Value */
  51. #define ZTR      2  /* Zero-Tree Root */
  52. #define VZTR     3  /* Valued Zero-Tree Root */
  53. #define ZTR_D    4  /* Parent has type of ZTR, VZTR, or ZTR_D (not coded) */
  54. #define VLEAF    5  /* Leaf coefficient with non-zero value (not coded) */
  55. #define ZLEAF    6  /* Leaf coefficient with zero value (not coded) */
  56. #define UNTYPED  7  /* so far only for clearing of ZTR_Ds */
  57. #define MAXDECOMPLEV 10
  58. #define INF_RES       1024
  59. #define MONO 1
  60. #define FULLSIZE 0
  61. #define PROGRESSIVE 0
  62. #define MASK_VAL (0xff)
  63. #define SKIP_NONE        0 /* Not in skip mode */
  64. #define SKIP_TNYC        1 /* Skip mode - Type Not Yet Coded */
  65. #define SKIP_ZTR         2 /* Skip mode - previous type coded was ZTR */
  66. #define SKIP_IZ          3 /* Skip mode - previous type coded was IZ */
  67. /* QValArithModel field types - if changed please change mapArithModelToText
  68.    variable */
  69. #if 0 // hjlee 0901
  70. #define ACM_NONE  0 /* When there's no value to code */
  71. #define ACM_SKIP  1
  72. #define ACM_ROOT  2
  73. #define ACM_VALZ  3
  74. #define ACM_VALNZ 4
  75. #define ACM_RESID 5 /* should have one for each set of coeffs arising in 
  76.        different initial spatial layers */
  77. #define ACM_DC    6
  78. #endif // hjlee 0901
  79. // hjlee 0901
  80. #define ACM_NONE  0 /* When there's no value to code */
  81. #define ACM_ROOT  1
  82. #define ACM_VALZ  2
  83. #define ACM_VALNZ 3
  84. #define ACM_RESID 4 /* should have one for each set of coeffs arising in 
  85.        different initial spatial layers */
  86. #define ACM_DC    5
  87. typedef short SInt;
  88. typedef U8  UChar;
  89. typedef struct {
  90.   /* not updated */
  91. SInt  wvt_coeff;    /*  Original value in encoding.*/
  92. SInt  rec_coeff; /*  Reconstructed value in decoding 
  93. Put here for comparing with originals
  94. at decoder. Reconstructed values can
  95. be put in original when memory is an
  96. issue and we don't want stats to be
  97. computed at decoder. */
  98. /* updated by quantization */
  99.   SInt           quantized_value; /* quantized value                    */
  100.   quantState     qState;          /* state of quantizer for coefficient */
  101.   /* updated by marking */
  102. UChar  state;          /* state of coefficient                   */
  103. UChar  type;           /* MZTE tree types: ZTR, IZ, VZTR, or VAL */
  104. UChar  skip;  /* Skip coding of coefficient value (not type)     */
  105.   /* updated by Shipeng */
  106. UChar  mask;
  107. } COEFFINFO;
  108. typedef struct {
  109.   Int   num_ZTR;
  110.   Int   num_VZTR;
  111.   Int   num_VAL;
  112. } STATINFO;
  113. typedef struct  {
  114.   Int    height;
  115.   Int    width;
  116.   UChar  *mask;
  117.   Void   *data; 
  118. } PICTURE;
  119. typedef struct {
  120.    SInt         quant;
  121.    UChar        allzero;
  122.    Int          root_max;   /* three maximum values for AC magnitude coding */
  123.    Int          valz_max;
  124.    Int          valnz_max;
  125.    Int          residual_max;
  126. // hjlee 0901
  127.    Int          wvtDecompNumBitPlanes[MAXDECOMPLEV];
  128.    Int          wvtDecompResNumBitPlanes;
  129.    Int          wvtDecompMax[MAXDECOMPLEV]; /* for _NEW_CONTEXT_ */
  130.    STATINFO     stat;
  131. } SNR_IMAGE;
  132. typedef struct {
  133.    SNR_IMAGE  snr_image; 
  134. } SNR_LAYER;
  135. typedef struct {
  136.    SInt         height;
  137.    SInt         width;
  138.    SInt         SNR_scalability_levels;
  139.    COEFFINFO    **coeffinfo;
  140.    SNR_LAYER    SNRlayer;
  141. } SPATIAL_LAYER;
  142. typedef struct snr_param {
  143.    Int SNR_scalability_levels;
  144.    Int *Quant;
  145. } SNR_PARAM;
  146. typedef struct wvt_codec 
  147. {
  148.   Int m_iBitDepth; /* number bits per pixel (spatial) */
  149.   Int m_iColors;    /* number of color components: 0 = mono, 3=yuv */
  150.   Int m_iColorFormat;  /* 4:4:4, 4:2:2, or 4:2:0 ???? */
  151.   PICTURE   *m_Image; /* spatial source */
  152.   PICTURE   *m_SegImage; /* spatial source */
  153.   
  154.   Int       m_iWvtType;      /* Type of filter */
  155.   Int       m_iWvtDownload;
  156.   Int       m_iWvtDecmpLev; 
  157.   Int       m_iWvtUniform;  // hjlee 0901
  158.   Int       *m_WvtFilters; /* Wavetfilter numbers: 0-9 */ // hjlee 0901
  159.   Int       m_iMean[NCOLOR]; /* mean of wvt coeffs in DC band ???? */
  160.   Int       m_iQDC[NCOLOR];  
  161.   Int       m_iOffsetDC;
  162.   Int       m_iMaxDC; /* max quantized DC coeff - pre-shifting */
  163.   Int       m_iDCWidth;
  164.   Int m_iDCHeight;
  165.   
  166.   // hjlee 0901
  167.   Int       m_lastWvtDecompInSpaLayer[MAXDECOMPLEV][NCOLOR];
  168.   Int       m_spaLayerWidth[MAXDECOMPLEV][NCOLOR];
  169.   Int       m_spaLayerHeight[MAXDECOMPLEV][NCOLOR];
  170.   UChar     m_defaultSpatialScale;
  171.   Int       m_iWidth;
  172.   Int m_iHeight; 
  173.   Int       m_iSpatialLev;
  174.   Int m_iQuantType;
  175.   Int m_iScanDirection;
  176.   Int     m_iScanOrder;
  177.   Bool m_bStartCodeEnable;
  178.   SPATIAL_LAYER   m_SPlayer[NCOLOR];
  179.   SNR_PARAM       *m_Qinfo[NCOLOR];
  180.   
  181.   Int m_iTargetSpatialLev;
  182.   Int m_iTargetSNRLev;
  183.   Int m_iDeringWinSize;
  184.   Int m_iDeringThreshold;
  185.   Int m_iTargetBitrate;     /* PEZW */
  186.  
  187. /* for shape coding */
  188. Int m_iAlphaChannel;
  189. Int m_iAlphaTh;
  190. Int m_iChangeCRDisable;
  191. Int m_iSTOConstAlpha;
  192. Int m_iSTOConstAlphaValue;
  193. Int m_iSingleBitFile;
  194. Char *m_cBitFile;
  195. Char *m_cBitFileAC;
  196. Int  m_iOriginX;
  197. Int  m_iOriginY;
  198. Int  m_iRealWidth;
  199. Int  m_iRealHeight;
  200. Int  m_iCurSpatialLev;
  201. Int  m_iCurSNRLev;
  202. Int  m_iCurColor;
  203. /* for arithmetic coder */
  204. Int m_iAcmOrder;       /* 0 - zoro order, 1 - mix order */
  205. Int m_iAcmMaxFreqChg;  /* 0 - default, 1 - used defined */
  206. Int *m_iAcmMaxFreq;    /* array of user defined maximum freqs */
  207. } WVT_CODEC;
  208. Class CVTCCommon
  209. {
  210. public:
  211. WVT_CODEC mzte_codec;
  212. // Utils.cpp
  213. Void setSpatialLevelAndDimensions(Int spLayer, Int c);
  214. Void updateResidMaxAndAssignSkips(Int c);
  215.     Int  xy2wvtDecompLev(Int x, Int y);
  216. // vtcdec.cpp
  217. Void setSpatialLayerDimsSQ(Int band);  // hjlee 0901
  218. Void getSpatialLayerDims(); //hjlee 0901
  219. Int ceilLog2(Int x); // hjlee 0901
  220. // QMInit.cpp
  221. Int ztqQListInit();
  222. Void ztqQListExit();
  223. Int ztqInitDC(Int decode, Int c);
  224. Int ztqInitAC(Int decode, Int c);
  225. // quant.cpp
  226. Void initQuantSingleStage(quantState *state, 
  227. Int *statePrevQ, Int initialVal);
  228. Void initInvQuantSingleStage(quantState *state, 
  229. Int *statePrevQ);
  230. Int quantRefLev(Int curQ, Int *lastQUsed, Int whichQ);
  231. Int invQuantSingleStage(Int QIndex, Int Q, 
  232. quantState *state, Int *statePrevQ,Int updatePrevQ);
  233. // QMUtils.cpp
  234. Int findChild(Int x, Int y, Int xc[], Int yc[], Int c);
  235. Int isIndexInRootBands(Int x, Int y, Int c);
  236. Void spatialLayerChangeUpdate(Int c);
  237. Int coordToSpatialLev(Int x, Int y, Int c);
  238. Void updateCoeffAndDescState(Int x, Int y, Int c);
  239. Void markCoeff(Int x, Int y, UChar valuedDes, Int c);
  240. Void updateState(Int x, Int y, Int type, Int c);
  241. // msg.cpp
  242. Void errorHandler(Char *s, ...);
  243. Void noteStat(Char *s, ...);
  244. Void noteDebug(Char *s, ...);
  245. Void noteDetail(Char *s, ...);
  246. Void noteProgress(Char *s, ...);
  247. Void noteProgressNoNL(Char *s, ...);
  248. Void noteWarning(Char *s, ...);
  249. Void noteError(Char *s, ...);
  250. Void noteErrorNoPre(Char *s, ...);
  251. //download_filter.cpp
  252. Void check_marker(Int marker_bit);
  253. Void check_symmetry(FILTER *filter);
  254. Void upload_wavelet_filters(FILTER *filter);
  255. Void download_wavelet_filters(FILTER **filter, Int type); // hjlee 0901
  256. // wavelet.cpp
  257. Void choose_wavelet_filter(FILTER **anafilter,FILTER **synfilter,
  258.    Int type);
  259. // bitpack.cpp
  260. Void init_bit_packing_fp(FILE *fp, Int clearByte);
  261. Void emit_bits(UShort code, Int size);
  262. Int get_X_bits(Int nbits);
  263. Void flush_bytes1();
  264. Int nextinputbit();
  265. // ztscanUtil.cpp
  266. Void clear_ZTR_D(COEFFINFO **coeffinfo, Int width, 
  267. Int height);
  268. Void probModelInitSQ(Int col);  // hjlee 0901
  269. Void probModelFreeSQ(Int col); // hjlee 0901
  270. Void setProbModelsSQ(Int col); // hjlee 0901
  271. Void probModelInitMQ(Int col); // hjlee 0901
  272. Void probModelFreeMQ(Int col); // hjlee 0901
  273. Void setProbModelsMQ(Int col); // hjlee 0901
  274. Void init_acm_maxf_enc(); // hjlee 0901
  275. Void init_acm_maxf_dec(); // hjlee 0901
  276. //ac.cpp
  277. Void mzte_update_model(ac_model *acm,Int sym); // hjlee 0901
  278. Void mzte_ac_model_init(ac_model *acm,Int nsym,
  279. UShort *ifreq,Int adapt,Int inc);
  280. Void mzte_ac_model_done(ac_model *acm);
  281. /* other */
  282. char *check_startcode (unsigned char *stream, long len);
  283. void one_bit_to_buffer (char bit, char *outbuffer);
  284. void undo_startcode_check (unsigned char *data, long len);
  285. /* for bilevel mode: added by Jie Liang */
  286.     /* from PEZW_utils.c */
  287.     PEZW_SPATIAL_LAYER *Init_PEZWdata (int color, int levels, int w, int h);
  288.     void restore_PEZWdata (PEZW_SPATIAL_LAYER **SPlayer);
  289.     int lshift_by_NBit (unsigned char *data, int len, int N);
  290. //computePSNR.cpp, added by U. Benzler 981117 
  291.     Void ComputePSNR(UChar *orgY, UChar *recY, 
  292.                 UChar *maskY,
  293.                 UChar *orgU, UChar *recU, 
  294.                 UChar *maskU,
  295.                 UChar *orgV, UChar *recV, 
  296.                 UChar *maskV,
  297.                 Int width, Int height, Int stat);
  298. };
  299. Class CVTCEncoder : public CVTCCommon, 
  300. public VTCIMAGEBOX,
  301. public VTCDWT,
  302. public VTCDWTMASK // hjlee 0901
  303. {
  304. public:
  305. // Constructor and Deconstructor
  306. ~CVTCEncoder ();
  307. CVTCEncoder ();
  308. // input/output 
  309. Char *m_cImagePath;
  310. Char *m_cOutBitsFile;
  311. Char *m_cSegImagePath;
  312. Void init(
  313. Char* cImagePath,
  314.     UInt uiAlphaChannel,
  315. Char* cSegImagePath,
  316. UInt uiAlphaTh,
  317. UInt uiChangeCRDisable,
  318. Char* cOutBitsFile,
  319. UInt uiColors,
  320. UInt uiFrmWidth,
  321. UInt uiFrmHeight,
  322. UInt uiWvtType,
  323. UInt uiWvtDownload,  // hjlee 0901
  324. UInt uiWvtDecmpLev,
  325. UInt uiWvtUniform, // hjlee 0901
  326. Int* iWvtFilters,  // hjlee 0901
  327. UInt uiQuantType,
  328. UInt uiScanDirection,
  329. Bool bStartCodeEnable,
  330. UInt uiTargetSpatialLev,
  331. UInt uiTargetSNRLev,
  332. UInt uiQdcY,
  333. UInt uiQdcUV,
  334. UInt uiSpatialLev ,
  335. UInt defaultSpatialScale, // hjlee 0901
  336. Int  *lastWvtDecompInSpaLayer, // hjlee 0901
  337. SNR_PARAM** Qinfo);
  338. // attribute
  339. Int GetcurSpatialLev() { 
  340. return mzte_codec.m_iCurSpatialLev; }
  341. Int GetDCHeight() { 
  342. return mzte_codec.m_iHeight>>mzte_codec.m_iWvtDecmpLev; }
  343. Int GetDCWidth() { 
  344. return mzte_codec.m_iWidth>>mzte_codec.m_iWvtDecmpLev; }
  345. // operation
  346. Void encode();
  347. protected:
  348. // vtcenc.cpp
  349. Void flush_buffer_file();
  350. Void close_buffer_file(FILE *fp);
  351. Void header_Enc(FILTER **wvtfilter); // hjlee 0901
  352. Void Put_Quant_and_Max(SNR_IMAGE *snr_image, Int spaLayer, Int color); // hjlee0901
  353. Void Put_Quant_and_Max_SQBB(SNR_IMAGE *snr_image, Int spaLayer,Int color); // hjlee0901
  354. Void textureLayerDC_Enc();
  355. Void TextureSpatialLayerSQNSC_enc(Int spa_lev);
  356. Void TextureSpatialLayerSQ_enc(Int spa_lev, FILE *bitfile);
  357. Void textureLayerSQ_Enc(FILE *bitfile);
  358. Void TextureObjectLayer_enc(FILTER **wvtfilter); // hjlee 0901
  359. Void textureLayerMQ_Enc(FILE *bitfile);
  360. Void TextureSNRLayerMQ_encode(Int spa_lev, Int snr_lev, FILE *fp);
  361. // read_image.cpp
  362. Void read_image(Char *img_path, 
  363. Int img_width, 
  364. Int img_height, 
  365. Int img_colors, 
  366. Int img_bit_depth,
  367. PICTURE *img);
  368. Int read_segimage(Char *seg_path, Int seg_width, Int seg_height, 
  369.   Int img_colors,
  370.   PICTURE *MyImage);
  371. Void get_virtual_image(PICTURE *MyImage, Int wvtDecompLev, 
  372.        Int usemask, Int colors, Int alphaTH, 
  373.        Int change_CR_disable, FILTER *Filter);
  374. // wavelet.cpp
  375. Void perform_DWT(FILTER **wvtfilter); // hjlee 0901
  376. // ac.cpp
  377. Void mzte_output_bit(ac_encoder *ace,Int bit);
  378. Void mzte_bit_plus_follow(ac_encoder *ace,Int bit);
  379. Void mzte_ac_encoder_init(ac_encoder *ace);
  380. Int  mzte_ac_encoder_done(ac_encoder *ace);
  381. Int  mzte_ac_encode_symbol(ac_encoder *ace, ac_model *acm, Int sym); // hjlee 0901
  382. // ztscan_enc.cpp
  383. SInt DC_pred_pix(Int i, Int j);
  384. Void DC_predict(Int color);
  385. Void wavelet_dc_encode(Int c);
  386. Void cacll_encode();
  387. Void wavelet_higher_bands_encode_SQ_band(Int col);
  388. Void cachb_encode_SQ_band(SNR_IMAGE *snr_image);
  389. // Void encode_pixel_SQ_band(Int h,Int w);
  390. Void wavelet_higher_bands_encode_SQ_tree();
  391. Void cachb_encode_SQ_tree();  // hjlee 0928
  392. // Void encode_pixel_SQ_tree(Int h,Int w);  // hjlee 0928
  393. Void encode_pixel_SQ(Int h,Int w);  // 1124
  394. Void mag_sign_encode_SQ(Int h,Int w);
  395. Void wavelet_higher_bands_encode_MQ(Int scanDirection);
  396. Void mark_ZTR_D(Int h,Int w);
  397. Void cachb_encode_MQ_band();
  398. // Void encode_pixel_MQ_band(Int h,Int w);
  399. Void cachb_encode_MQ_tree(); // hjlee 0928
  400. // Void encode_pixel_MQ_tree(Int h,Int w);  // hjlee 0928
  401. Void encode_pixel_MQ(Int h,Int w);  // 1124
  402. Void mag_sign_encode_MQ(Int h,Int w);
  403. Void bitplane_encode(Int val,Int l,Int max_bplane); // hjlee 0901
  404. Void bitplane_res_encode(Int val,Int l,Int max_bplane); // hjlee 0901
  405. // Void encodeBlocks(Int y, Int x, Int n);  // 1124
  406. Void encodeSQBlocks(Int y, Int x, Int n);
  407. Void encodeMQBlocks(Int y, Int x, Int n);
  408. // encQM.cpp
  409. Void quantizeCoeff(Int x, Int y, Int c);
  410. Int quantizeAndMarkCoeffs(Int x, Int y, Int c);
  411. Int encQuantizeDC(Int c);
  412. Int encQuantizeAndMarkAC(Int c);
  413. Int encUpdateStateAC(Int c);
  414. // quant.cpp
  415. Int quantSingleStage(Int Q, quantState *state, 
  416. Int *statePrevQ,Int updatePrevQ);
  417. // bitpack.cpp
  418. Int get_total_bit_rate();
  419. Int get_total_bit_rate_dec();
  420. Int get_total_bit_rate_junk();
  421. Void flush_bytes();
  422. Void flush_bits1 ();
  423. Void flush_bits ();
  424. Void flush_bits_zeros ();
  425. Int put_param(Int value, Int nbits);
  426. UInt LookBitsFromStream (Int n);
  427. Void emit_bits_checksc(UInt code, Int size);
  428. Void emit_bits_checksc_init();
  429. Void write_to_bitstream(UChar *bitbuffer,Int total_bits);
  430. /* for bilevel mode: added by Jie Liang */
  431.     /* from PEZW_textureBQ.c */
  432.     void textureLayerBQ_Enc(FILE *bitfile);
  433.     /* from PEZW_utils.c */
  434.     void PEZW_bitpack (PEZW_SPATIAL_LAYER **SPlayer);
  435.     void PEZW_freeEnc (PEZW_SPATIAL_LAYER **SPlayer);
  436. };
  437. Class CVTCDecoder : public CVTCCommon, 
  438. public VTCIMAGEBOX,
  439. public VTCIDWT,
  440. public VTCDWTMASK
  441. {
  442. public:
  443. // Constructor and Deconstructor
  444. ~CVTCDecoder ();
  445. CVTCDecoder ();
  446. Char *m_cInBitsFile;
  447. Char *m_cRecImageFile;
  448. // vtcdec.cpp
  449. Void header_Dec(FILTER ***wvtfilter, PICTURE **Image); // hjlee 0901
  450. Void Get_Quant_and_Max(SNR_IMAGE *snr_image, Int spaLayer, 
  451. Int color); // hjlee 0901
  452. Void Get_Quant_and_Max_SQBB(SNR_IMAGE *snr_image, Int spaLayer, 
  453.    Int color); // hjlee 0901
  454. Void textureLayerDC_Dec();
  455. Void TextureSpatialLayerSQNSC_dec(Int spa_lev);
  456. Void TextureSpatialLayerSQ_dec(Int spa_lev, FILE *bitfile);
  457. Void textureLayerSQ_Dec(FILE *bitfile);
  458. Void TextureSNRLayerMQ_decode(Int spa_lev, Int snr_lev,FILE *fp);
  459. // hjlee 0901
  460. Void textureLayerMQ_Dec(FILE *bitfile, 
  461.        Int  target_spatial_levels,
  462.        Int  target_snr_levels,
  463.        FILTER **wvtfilter); // hjlee 0901
  464.    
  465. // hjlee 0901
  466. Void TextureObjectLayer_dec(Int  target_spatial_levels,
  467.    Int  target_snr_levels, FILTER ***pwvtfilter); // hjlee 0901
  468. Void decode(Char *InBitsFile, Char *RecImageFile,
  469. Int TargetSpaLev, Int TargetSNRLev); 
  470. // seg.cpp
  471. // hjlee 0901
  472. Void get_virtual_mask(PICTURE *MyImage,  Int wvtDecompLev,
  473.       Int w, Int h, Int usemask, Int colors, FILTER **filters) ;
  474.   
  475. // decQM.c
  476. Void iQuantizeCoeff(Int x, Int y, Int c);
  477. Void iQuantizeCoeffs(Int x, Int y, Int c);
  478. Int decIQuantizeDC(Int c);
  479. Int decIQuantizeAC(Int c);
  480. Int decIQuantizeAC_spa(Int spa_lev,Int c);
  481. Int decUpdateStateAC(Int c);
  482. Int markCoeffs(Int x, Int y, Int c);
  483. Int decMarkAC(Int c);
  484. Int decUpdateStateAC_spa(Int c);  // hjlee 0901
  485. // ac.cpp
  486. Int mzte_input_bit(ac_decoder *acd);
  487. Void mzte_ac_decoder_done(ac_decoder *acd);
  488. Void mzte_ac_decoder_init(ac_decoder *acd);
  489. Int mzte_ac_decode_symbol(ac_decoder *acd,ac_model *acm); // hjlee 0901
  490. //ztscan_dec.cpp
  491. Short  iDC_pred_pix(Int i, Int j);
  492. Void   iDC_predict(Int color);
  493. Void wavelet_dc_decode(Int c);
  494. Void callc_decode();
  495. Void wavelet_higher_bands_decode_SQ_band(Int col);
  496. Void cachb_decode_SQ_band(SNR_IMAGE *snr_image);
  497. // Void decode_pixel_SQ_band(Int h,Int w); // 1124
  498. Void wavelet_higher_bands_decode_SQ_tree();
  499. Void cachb_decode_SQ_tree(); // hjlee 0901
  500. // Void decode_pixel_SQ_tree(Int h0,Int w0); // hjlee 0901
  501. Void decode_pixel_SQ(Int h,Int w); // 1124
  502. Void mag_sign_decode_SQ(Int h,Int w);
  503. Void wavelet_higher_bands_decode_MQ(Int scanDirection);
  504. Void cachb_decode_MQ_band();
  505. // Void decode_pixel_MQ_band(Int h,Int w);
  506. Void decode_pixel_MQ(Int h,Int w);
  507. Void cachb_decode_MQ_tree();
  508. // Void decode_pixel_MQ_tree(Int h,Int w);
  509. Void mark_ZTR_D(Int h,Int w);
  510. Void mag_sign_decode_MQ(Int h,Int w);
  511. Int bitplane_decode(Int l,Int max_bplane); // hjlee 0901
  512. Int bitplane_res_decode(Int l,Int max_bplane);  // hjlee 0901
  513. // Void decodeBlocks(Int y, Int x, Int n);   //1124
  514. Void decodeSQBlocks(Int y, Int x, Int n);
  515. Void decodeMQBlocks(Int y, Int x, Int n);
  516. // bitpack.cpp
  517. Int align_byte ();
  518. Int get_param(Int nbits);
  519. Void restore_arithmetic_offset(Int bits_to_go);
  520. // wavelet.cpp
  521. Void perform_IDWT(FILTER **wvtfilter,
  522.   Char *recImgFile); // hjlee 0901
  523. // write_image.cpp 
  524. Void write_image(Char *recImgFile, Int colors,
  525.  Int width, Int height,
  526.  Int real_width, Int real_height,
  527.  Int rorigin_x, Int rorigin_y,
  528.  UChar *outimage[3], UChar *outmask[3],
  529.  Int usemask, Int fullsize, Int MinLevel);
  530. /* for bilevel mode: added by Jie Liang */
  531.     /* from PEZW_textureBQ.c */
  532.     void textureLayerBQ_Dec(FILE *bitfile);
  533.     void PEZW_decode_ratecontrol (PEZW_SPATIAL_LAYER **SPlayer, int bytes_decoded);
  534.     /* from PEZW_utils.c */
  535.     void PEZW_bit_unpack (PEZW_SPATIAL_LAYER **SPlayer);
  536.     void PEZW_freeDec (PEZW_SPATIAL_LAYER **SPlayer);
  537. /* bitpack.cpp */
  538. Int get_allbits (Char *buffer);
  539. Int Is_startcode (long startcode);
  540. int align_byte1 ();
  541. Int get_X_bits_checksc(Int nbits);
  542. Void get_X_bits_checksc_init();
  543. int get_allbits_checksc (unsigned char *buffer);
  544. Int align_byte_checksc ();
  545.     int decoded_bytes_from_bitstream ();
  546. };
  547. #endif /* __VTCENC_HPP_ */