symbenctab.cpp
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:2k
源码类别:

3G开发

开发平台:

Visual C++

  1. // symbenctab.cpp
  2. //
  3. #include "iostream.h"
  4. #include "symbenctab.h"
  5. #include "xor.h"
  6. #include "gen_tools.h"
  7. SymbEncodingTable::SymbEncodingTable( unsigned int rate_numer, 
  8.                                       unsigned int rate_denom,
  9.                                       unsigned int *inp_polys)
  10. {
  11.   //  rate_numer is the number of input bits processed each cycle
  12.   //  rate_denom is the number of output bits generated each cycle
  13.   //  polys points to a set of rate_numer*rate_denom polynomials
  14.   //        the polynomial pointed to by polys[i][j] operates on
  15.   //        the i-th input subsequence and contributes to the
  16.   //        j-th output subsequence
  17.   unsigned int j;
  18.   unsigned int out_val;
  19.   int composite;
  20.   int *polys;
  21.   int num_active_bits;
  22.   polys = new int[rate_numer];
  23.   composite = 0;
  24.   for(j=0; j<rate_denom; j++)
  25.     {
  26.     composite |= inp_polys[j];
  27.     }
  28.   num_active_bits = ActiveBitCount(composite);
  29.   for( j=0; j<rate_denom; j++)
  30.     {
  31.     polys[j] = ReverseBits(inp_polys[j], num_active_bits);
  32.     cout << "P[" << j << "] = " << polys[j] << endl;
  33.     }
  34.   //---------------------------
  35.   Table_Len = 1<<num_active_bits;
  36.   Out_Table = new int[Table_Len];
  37.   for(int n=0; n<Table_Len; n++)
  38.     {
  39.     out_val=0;
  40.     for(unsigned int out_num=0; out_num<rate_denom; out_num++)
  41.       {
  42.       out_val <<= 1;
  43.       out_val |= xor(n&polys[out_num]);
  44.       }
  45.     Out_Table[n] = out_val;
  46.     }
  47. }
  48. //=====================================================
  49. SymbEncodingTable::~SymbEncodingTable()
  50. {
  51.   delete [] Out_Table;
  52. }
  53. //====================================================
  54. int SymbEncodingTable::GetOutput(int n)
  55. {
  56.   return(Out_Table[n]);
  57. }
  58. //=====
  59. //fill
  60. //fill
  61. //fill
  62. //fill
  63. //fill
  64. //fill
  65. //fill
  66. //fill
  67. //fill
  68. //fill
  69. //fill
  70. //fill
  71. //fill
  72. //fill
  73. //fill
  74. //fill
  75. //fill
  76. //fill
  77. //fill
  78. //fill
  79. //fill
  80. //fill
  81. //fill
  82. //fill
  83. //fill
  84. //fill
  85. //fill
  86. //fill