biariencode.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:4k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2. ***********************************************************************
  3. * COPYRIGHT AND WARRANTY INFORMATION
  4. *
  5. * Copyright 2001, International Telecommunications Union, Geneva
  6. *
  7. * DISCLAIMER OF WARRANTY
  8. *
  9. * These software programs are available to the user without any
  10. * license fee or royalty on an "as is" basis. The ITU disclaims
  11. * any and all warranties, whether express, implied, or
  12. * statutory, including any implied warranties of merchantability
  13. * or of fitness for a particular purpose.  In no event shall the
  14. * contributor or the ITU be liable for any incidental, punitive, or
  15. * consequential damages of any kind whatsoever arising from the
  16. * use of these programs.
  17. *
  18. * This disclaimer of warranty extends to the user of these programs
  19. * and user's customers, employees, agents, transferees, successors,
  20. * and assigns.
  21. *
  22. * The ITU does not represent or warrant that the programs furnished
  23. * hereunder are free of infringement of any third-party patents.
  24. * Commercial implementations of ITU-T Recommendations, including
  25. * shareware, may be subject to royalty fees to patent holders.
  26. * Information regarding the ITU-T patent policy is available from
  27. * the ITU Web site at http://www.itu.int.
  28. *
  29. * THIS IS NOT A GRANT OF PATENT RIGHTS - SEE THE ITU-T PATENT POLICY.
  30. ************************************************************************
  31. */
  32. /*!
  33.  ***************************************************************************
  34.  * file
  35.  *    biariencode.h
  36.  *
  37.  * brief
  38.  *    Headerfile for binary arithmetic encoding routines
  39.  *
  40.  * author
  41.  *    Detlev Marpe,
  42.  *    Gabi Blaettermann                                                     n
  43.  *    Copyright (C) 2000 HEINRICH HERTZ INSTITUTE All Rights Reserved.
  44.  *
  45.  * date
  46.  *    21. Oct 2000
  47.  **************************************************************************
  48.  */
  49. #ifndef _BIARIENCOD_H_
  50. #define _BIARIENCOD_H_
  51. #define AAC_FRAC_TABLE 0  //!< replaces division in the AC by a table lookup
  52. /************************************************************************
  53.  * C o n s t a n t s
  54.  ***********************************************************************
  55.  */
  56. //! precision for arithmetic
  57. #define CODE_VALUE_BITS 16
  58. // 1/4  2/4  3/4  of interval
  59. #define FIRST_QTR 0x4000 //!< (1<<(CODE_VALUE_BITS-2))
  60. #define HALF      0x8000 //!< (FIRST_QTR+FIRST_QTR)
  61. #define THIRD_QTR 0xC000 //!< (HALF+FIRST_QTR)
  62. //! maximum value of range
  63. #define TOP_VALUE 0xFFFF //!< ((1<<CODE_VALUE_BITS)-1)
  64. #ifdef AAC_FRAC_TABLE
  65. //! ARITH_CUM_FREQ_TABLE[i]=(unsigned int)((pow(2,26)/i)+0.5);
  66. const unsigned int ARITH_CUM_FREQ_TABLE[128] =
  67. {
  68.        0,        0, 33554432,  22369621,  16777216,  13421773,  11184811,  9586981,  8388608,  7456540,
  69.  6710886,  6100806,  5592405,   5162220,   4793490,   4473924,   4194304,  3947580,  3728270,  3532045,
  70.  3355443,  3195660,  3050403,   2917777,   2796203,   2684355,   2581110,  2485513,  2396745,  2314099,
  71.  2236962,  2164802,  2097152,   2033602,   1973790,   1917396,   1864135,  1813753,  1766023,  1720740,
  72.  1677722,  1636802,  1597830,   1560671,   1525201,   1491308,   1458888,  1427848,  1398101,  1369569,
  73.  1342177,  1315860,  1290555,   1266205,   1242757,   1220161,   1198373,  1177348,  1157049,  1137438,
  74.  1118481,  1100145,  1082401,   1065220,   1048576,   1032444,   1016801,  1001625,   986895,   972592,
  75.   958698,   945195,   932068,    919300,    906877,    894785,    883011,   871544,   860370,   849479,
  76.   838861,   828504,   818401,    808541,    798915,    789516,    780336,   771366,   762601,   754032,
  77.   745654,   737460,   729444,    721601,    713924,    706409,    699051,   691844,   684784,   677867,
  78.   671089,   664444,   657930,    651542,    645278,    639132,    633102,   627186,   621378,   615678,
  79.   610081,   604584,   599186,    593884,    588674,    583555,    578525,   573580,   568719,   563940,
  80.   559241,   554619,   550073,    545601,    541201,    536871,    532610,   528416
  81. };
  82. #endif
  83. /************************************************************************
  84.  * D e f i n i t i o n s
  85.  ***********************************************************************
  86.  */
  87. // some definitions to increase the readability of the source code
  88. #define Elow            (eep->Elow)
  89. #define Ehigh           (eep->Ehigh)
  90. #define Ebits_to_follow (eep->Ebits_to_follow)
  91. #define Ebuffer         (eep->Ebuffer)
  92. #define Ebits_to_go     (eep->Ebits_to_go)
  93. #define Ecodestrm       (eep->Ecodestrm)
  94. #define Ecodestrm_len   (eep->Ecodestrm_len)
  95. #endif  // BIARIENCOD_H