biariencode.h
上传用户:hjq518
上传日期:2021-12-09
资源大小:5084k
文件大小:5k
源码类别:

Audio

开发平台:

Visual C++

  1. /*!
  2.  ***************************************************************************
  3.  * file
  4.  *    biariencode.h
  5.  *
  6.  * brief
  7.  *    Headerfile for binary arithmetic encoding routines
  8.  *
  9.  * author
  10.  *    - Detlev Marpe
  11.  *    - Gabi Blaettermann
  12.  *    - Gunnar Marten
  13.  *
  14.  *    Copyright (C) 2000 HEINRICH HERTZ INSTITUTE All Rights Reserved.
  15.  *
  16.  * date
  17.  *    21. Oct 2000
  18.  **************************************************************************
  19.  */
  20. #ifndef _BIARIENCOD_H_
  21. #define _BIARIENCOD_H_
  22. /************************************************************************
  23.  * D e f i n i t i o n s
  24.  ***********************************************************************
  25.  */
  26. // some definitions to increase the readability of the source code
  27. #define Elow                      (eep->Elow)
  28. #define Erange                    (eep->Erange)
  29. #define Ebuffer                   (eep->Ebuffer)
  30. #define Ebits_to_go               (eep->Ebits_to_go)
  31. #define Ecodestrm                 (eep->Ecodestrm)
  32. #define Ecodestrm_len             (eep->Ecodestrm_len)
  33. #define Ecodestrm_laststartcode   (eep->Ecodestrm_laststartcode)
  34. #define B_BITS                    10 // Number of bits to represent the whole coding interval
  35. #define Echunks_outstanding       (eep->Echunks_outstanding)
  36. #define Epbuf                     (eep->Epbuf)
  37. #define BITS_TO_LOAD   16
  38. #define MAX_BITS       (B_BITS + BITS_TO_LOAD)
  39. #define ONE            (1 << MAX_BITS)
  40. #define HALF           (1 << (B_BITS-1))
  41. #define QUARTER        (1 << (B_BITS-2))
  42. #define MIN_BITS_TO_GO  0
  43. #define B_LOAD_MASK    ((1<<BITS_TO_LOAD) - 1)
  44. // Range table for LPS
  45. const byte rLPS_table_64x4[64][4]=
  46. {
  47.         { 128, 176, 208, 240},
  48.         { 128, 167, 197, 227},
  49.         { 128, 158, 187, 216},
  50.         { 123, 150, 178, 205},
  51.         { 116, 142, 169, 195},
  52.         { 111, 135, 160, 185},
  53.         { 105, 128, 152, 175},
  54.         { 100, 122, 144, 166},
  55.         {  95, 116, 137, 158},
  56.         {  90, 110, 130, 150},
  57.         {  85, 104, 123, 142},
  58.         {  81,  99, 117, 135},
  59.         {  77,  94, 111, 128},
  60.         {  73,  89, 105, 122},
  61.         {  69,  85, 100, 116},
  62.         {  66,  80,  95, 110},
  63.         {  62,  76,  90, 104},
  64.         {  59,  72,  86,  99},
  65.         {  56,  69,  81,  94},
  66.         {  53,  65,  77,  89},
  67.         {  51,  62,  73,  85},
  68.         {  48,  59,  69,  80},
  69.         {  46,  56,  66,  76},
  70.         {  43,  53,  63,  72},
  71.         {  41,  50,  59,  69},
  72.         {  39,  48,  56,  65},
  73.         {  37,  45,  54,  62},
  74.         {  35,  43,  51,  59},
  75.         {  33,  41,  48,  56},
  76.         {  32,  39,  46,  53},
  77.         {  30,  37,  43,  50},
  78.         {  29,  35,  41,  48},
  79.         {  27,  33,  39,  45},
  80.         {  26,  31,  37,  43},
  81.         {  24,  30,  35,  41},
  82.         {  23,  28,  33,  39},
  83.         {  22,  27,  32,  37},
  84.         {  21,  26,  30,  35},
  85.         {  20,  24,  29,  33},
  86.         {  19,  23,  27,  31},
  87.         {  18,  22,  26,  30},
  88.         {  17,  21,  25,  28},
  89.         {  16,  20,  23,  27},
  90.         {  15,  19,  22,  25},
  91.         {  14,  18,  21,  24},
  92.         {  14,  17,  20,  23},
  93.         {  13,  16,  19,  22},
  94.         {  12,  15,  18,  21},
  95.         {  12,  14,  17,  20},
  96.         {  11,  14,  16,  19},
  97.         {  11,  13,  15,  18},
  98.         {  10,  12,  15,  17},
  99.         {  10,  12,  14,  16},
  100.         {   9,  11,  13,  15},
  101.         {   9,  11,  12,  14},
  102.         {   8,  10,  12,  14},
  103.         {   8,   9,  11,  13},
  104.         {   7,   9,  11,  12},
  105.         {   7,   9,  10,  12},
  106.         {   7,   8,  10,  11},
  107.         {   6,   8,   9,  11},
  108.         {   6,   7,   9,  10},
  109.         {   6,   7,   8,   9},
  110.         {   2,   2,   2,   2}
  111. };
  112. const byte AC_next_state_MPS_64[64] =
  113. {
  114.                 1,2,3,4,5,6,7,8,9,10,
  115.                 11,12,13,14,15,16,17,18,19,20,
  116.                 21,22,23,24,25,26,27,28,29,30,
  117.                 31,32,33,34,35,36,37,38,39,40,
  118.                 41,42,43,44,45,46,47,48,49,50,
  119.                 51,52,53,54,55,56,57,58,59,60,
  120.                 61,62,62,63
  121. };
  122. const byte AC_next_state_LPS_64[64] =
  123. {
  124.                  0, 0, 1, 2, 2, 4, 4, 5, 6, 7,
  125.                  8, 9, 9,11,11,12,13,13,15,15,
  126.                  16,16,18,18,19,19,21,21,22,22,
  127.                  23,24,24,25,26,26,27,27,28,29,
  128.                  29,30,30,30,31,32,32,33,33,33,
  129.                  34,34,35,35,35,36,36,36,37,37,
  130.                  37,38,38,63
  131. };
  132. const byte renorm_table_32[32]={6,5,4,4,3,3,3,3,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
  133. #endif  // BIARIENCOD_H