Ignore:
Timestamp:
Jun 18, 2006 1:59:14 AM (18 years ago)
Author:
bennylp
Message:

Bring the GSM codec to patchlevel 12

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/src/pjmedia-codec/gsm/gsm_implode.c

    r176 r517  
    117117 
    118118                uword sr = 0; 
    119                 if (s->frame_index == 0) { 
    120  
    121                         sr = *c++; 
    122                         LARc[0] = sr & 0x3f;  sr >>= 6; 
    123                         sr |= (uword)*c++ << 2; 
    124                         LARc[1] = sr & 0x3f;  sr >>= 6; 
    125                         sr |= (uword)*c++ << 4; 
    126                         LARc[2] = sr & 0x1f;  sr >>= 5; 
    127                         LARc[3] = sr & 0x1f;  sr >>= 5; 
    128                         sr |= (uword)*c++ << 2; 
    129                         LARc[4] = sr & 0xf;  sr >>= 4; 
    130                         LARc[5] = sr & 0xf;  sr >>= 4; 
    131                         sr |= (uword)*c++ << 2;                 /* 5 */ 
    132                         LARc[6] = sr & 0x7;  sr >>= 3; 
    133                         LARc[7] = sr & 0x7;  sr >>= 3; 
    134                         sr |= (uword)*c++ << 4; 
    135                         Nc[0] = sr & 0x7f;  sr >>= 7; 
    136                         bc[0] = sr & 0x3;  sr >>= 2; 
    137                         Mc[0] = sr & 0x3;  sr >>= 2; 
    138                         sr |= (uword)*c++ << 1; 
    139                         xmaxc[0] = sr & 0x3f;  sr >>= 6; 
    140 #undef  xmc 
     119                if (s->frame_index) { 
     120                        sr = sr >> 6 | LARc[0] << 10; 
     121                        sr = sr >> 6 | LARc[1] << 10; 
     122                        *c++ = sr >> 4; 
     123                        sr = sr >> 5 | LARc[2] << 11; 
     124                        *c++ = sr >> 7; 
     125                        sr = sr >> 5 | LARc[3] << 11; 
     126                        sr = sr >> 4 | LARc[4] << 12; 
     127                        *c++ = sr >> 6; 
     128                        sr = sr >> 4 | LARc[5] << 12; 
     129                        sr = sr >> 3 | LARc[6] << 13; 
     130                        *c++ = sr >> 7; 
     131                        sr = sr >> 3 | LARc[7] << 13; 
     132                        sr = sr >> 7 | Nc[0] << 9; 
     133                        *c++ = sr >> 5; 
     134                        sr = sr >> 2 | bc[0] << 14; 
     135                        sr = sr >> 2 | Mc[0] << 14; 
     136                        sr = sr >> 6 | xmaxc[0] << 10; 
     137                        *c++ = sr >> 3; 
     138#undef xmc 
    141139#define xmc     (source + 12) 
    142                         xmc[0] = sr & 0x7;  sr >>= 3; 
    143                         sr = *c++; 
    144                         xmc[1] = sr & 0x7;  sr >>= 3; 
    145                         xmc[2] = sr & 0x7;  sr >>= 3; 
    146                         sr |= (uword)*c++ << 2; 
    147                         xmc[3] = sr & 0x7;  sr >>= 3; 
    148                         xmc[4] = sr & 0x7;  sr >>= 3; 
    149                         xmc[5] = sr & 0x7;  sr >>= 3; 
    150                         sr |= (uword)*c++ << 1;                 /* 10 */ 
    151                         xmc[6] = sr & 0x7;  sr >>= 3; 
    152                         xmc[7] = sr & 0x7;  sr >>= 3; 
    153                         xmc[8] = sr & 0x7;  sr >>= 3; 
    154                         sr = *c++; 
    155                         xmc[9] = sr & 0x7;  sr >>= 3; 
    156                         xmc[10] = sr & 0x7;  sr >>= 3; 
    157                         sr |= (uword)*c++ << 2; 
    158                         xmc[11] = sr & 0x7;  sr >>= 3; 
    159                         xmc[12] = sr & 0x7;  sr >>= 3; 
    160                         sr |= (uword)*c++ << 4; 
    161                         Nc[1] = sr & 0x7f;  sr >>= 7; 
    162                         bc[1] = sr & 0x3;  sr >>= 2; 
    163                         Mc[1] = sr & 0x3;  sr >>= 2; 
    164                         sr |= (uword)*c++ << 1; 
    165                         xmaxc[1] = sr & 0x3f;  sr >>= 6; 
     140 
     141                        sr = sr >> 3 | xmc[0] << 13; 
     142                        *c++ = sr >> 8; 
     143                        sr = sr >> 3 | xmc[1] << 13; 
     144                        sr = sr >> 3 | xmc[2] << 13; 
     145                        sr = sr >> 3 | xmc[3] << 13; 
     146                        *c++ = sr >> 7; 
     147                        sr = sr >> 3 | xmc[4] << 13; 
     148                        sr = sr >> 3 | xmc[5] << 13; 
     149                        sr = sr >> 3 | xmc[6] << 13; 
     150                        *c++ = sr >> 6; 
     151                        sr = sr >> 3 | xmc[7] << 13; 
     152                        sr = sr >> 3 | xmc[8] << 13; 
     153                        *c++ = sr >> 8; 
     154                        sr = sr >> 3 | xmc[9] << 13; 
     155                        sr = sr >> 3 | xmc[10] << 13; 
     156                        sr = sr >> 3 | xmc[11] << 13; 
     157                        *c++ = sr >> 7; 
     158                        sr = sr >> 3 | xmc[12] << 13; 
     159                        sr = sr >> 7 | Nc[1] << 9; 
     160                        *c++ = sr >> 5; 
     161                        sr = sr >> 2 | bc[1] << 14; 
     162                        sr = sr >> 2 | Mc[1] << 14; 
     163                        sr = sr >> 6 | xmaxc[1] << 10; 
     164                        *c++ = sr >> 3; 
    166165#undef  xmc 
    167166#define xmc     (source + 29 - 13) 
    168                         xmc[13] = sr & 0x7;  sr >>= 3; 
    169                         sr = *c++;                              /* 15 */ 
    170                         xmc[14] = sr & 0x7;  sr >>= 3; 
    171                         xmc[15] = sr & 0x7;  sr >>= 3; 
    172                         sr |= (uword)*c++ << 2; 
    173                         xmc[16] = sr & 0x7;  sr >>= 3; 
    174                         xmc[17] = sr & 0x7;  sr >>= 3; 
    175                         xmc[18] = sr & 0x7;  sr >>= 3; 
    176                         sr |= (uword)*c++ << 1; 
    177                         xmc[19] = sr & 0x7;  sr >>= 3; 
    178                         xmc[20] = sr & 0x7;  sr >>= 3; 
    179                         xmc[21] = sr & 0x7;  sr >>= 3; 
    180                         sr = *c++; 
    181                         xmc[22] = sr & 0x7;  sr >>= 3; 
    182                         xmc[23] = sr & 0x7;  sr >>= 3; 
    183                         sr |= (uword)*c++ << 2; 
    184                         xmc[24] = sr & 0x7;  sr >>= 3; 
    185                         xmc[25] = sr & 0x7;  sr >>= 3; 
    186                         sr |= (uword)*c++ << 4;                 /* 20 */ 
    187                         Nc[2] = sr & 0x7f;  sr >>= 7; 
    188                         bc[2] = sr & 0x3;  sr >>= 2; 
    189                         Mc[2] = sr & 0x3;  sr >>= 2; 
    190                         sr |= (uword)*c++ << 1; 
    191                         xmaxc[2] = sr & 0x3f;  sr >>= 6; 
     167 
     168                        sr = sr >> 3 | xmc[13] << 13; 
     169                        *c++ = sr >> 8; 
     170                        sr = sr >> 3 | xmc[14] << 13; 
     171                        sr = sr >> 3 | xmc[15] << 13; 
     172                        sr = sr >> 3 | xmc[16] << 13; 
     173                        *c++ = sr >> 7; 
     174                        sr = sr >> 3 | xmc[17] << 13; 
     175                        sr = sr >> 3 | xmc[18] << 13; 
     176                        sr = sr >> 3 | xmc[19] << 13; 
     177                        *c++ = sr >> 6; 
     178                        sr = sr >> 3 | xmc[20] << 13; 
     179                        sr = sr >> 3 | xmc[21] << 13; 
     180                        *c++ = sr >> 8; 
     181                        sr = sr >> 3 | xmc[22] << 13; 
     182                        sr = sr >> 3 | xmc[23] << 13; 
     183                        sr = sr >> 3 | xmc[24] << 13; 
     184                        *c++ = sr >> 7; 
     185                        sr = sr >> 3 | xmc[25] << 13; 
     186                        sr = sr >> 7 | Nc[2] << 9; 
     187                        *c++ = sr >> 5; 
     188                        sr = sr >> 2 | bc[2] << 14; 
     189                        sr = sr >> 2 | Mc[2] << 14; 
     190                        sr = sr >> 6 | xmaxc[2] << 10; 
     191                        *c++ = sr >> 3; 
    192192#undef  xmc 
    193193#define xmc     (source + 46 - 26) 
    194                         xmc[26] = sr & 0x7;  sr >>= 3; 
    195                         sr = *c++; 
    196                         xmc[27] = sr & 0x7;  sr >>= 3; 
    197                         xmc[28] = sr & 0x7;  sr >>= 3; 
    198                         sr |= (uword)*c++ << 2; 
    199                         xmc[29] = sr & 0x7;  sr >>= 3; 
    200                         xmc[30] = sr & 0x7;  sr >>= 3; 
    201                         xmc[31] = sr & 0x7;  sr >>= 3; 
    202                         sr |= (uword)*c++ << 1; 
    203                         xmc[32] = sr & 0x7;  sr >>= 3; 
    204                         xmc[33] = sr & 0x7;  sr >>= 3; 
    205                         xmc[34] = sr & 0x7;  sr >>= 3; 
    206                         sr = *c++;                              /* 25 */ 
    207                         xmc[35] = sr & 0x7;  sr >>= 3; 
    208                         xmc[36] = sr & 0x7;  sr >>= 3; 
    209                         sr |= (uword)*c++ << 2; 
    210                         xmc[37] = sr & 0x7;  sr >>= 3; 
    211                         xmc[38] = sr & 0x7;  sr >>= 3; 
    212                         sr |= (uword)*c++ << 4; 
    213                         Nc[3] = sr & 0x7f;  sr >>= 7; 
    214                         bc[3] = sr & 0x3;  sr >>= 2; 
    215                         Mc[3] = sr & 0x3;  sr >>= 2; 
    216                         sr |= (uword)*c++ << 1; 
    217                         xmaxc[3] = sr & 0x3f;  sr >>= 6; 
     194 
     195                        sr = sr >> 3 | xmc[26] << 13; 
     196                        *c++ = sr >> 8; 
     197                        sr = sr >> 3 | xmc[27] << 13; 
     198                        sr = sr >> 3 | xmc[28] << 13; 
     199                        sr = sr >> 3 | xmc[29] << 13; 
     200                        *c++ = sr >> 7; 
     201                        sr = sr >> 3 | xmc[30] << 13; 
     202                        sr = sr >> 3 | xmc[31] << 13; 
     203                        sr = sr >> 3 | xmc[32] << 13; 
     204                        *c++ = sr >> 6; 
     205                        sr = sr >> 3 | xmc[33] << 13; 
     206                        sr = sr >> 3 | xmc[34] << 13; 
     207                        *c++ = sr >> 8; 
     208                        sr = sr >> 3 | xmc[35] << 13; 
     209                        sr = sr >> 3 | xmc[36] << 13; 
     210                        sr = sr >> 3 | xmc[37] << 13; 
     211                        *c++ = sr >> 7; 
     212                        sr = sr >> 3 | xmc[38] << 13; 
     213                        sr = sr >> 7 | Nc[3] << 9; 
     214                        *c++ = sr >> 5; 
     215                        sr = sr >> 2 | bc[3] << 14; 
     216                        sr = sr >> 2 | Mc[3] << 14; 
     217                        sr = sr >> 6 | xmaxc[3] << 10; 
     218                        *c++ = sr >> 3; 
    218219#undef  xmc 
    219220#define xmc     (source + 63 - 39) 
    220221 
    221                         xmc[39] = sr & 0x7;  sr >>= 3; 
    222                         sr = *c++; 
    223                         xmc[40] = sr & 0x7;  sr >>= 3; 
    224                         xmc[41] = sr & 0x7;  sr >>= 3; 
    225                         sr |= (uword)*c++ << 2;                 /* 30 */ 
    226                         xmc[42] = sr & 0x7;  sr >>= 3; 
    227                         xmc[43] = sr & 0x7;  sr >>= 3; 
    228                         xmc[44] = sr & 0x7;  sr >>= 3; 
    229                         sr |= (uword)*c++ << 1; 
    230                         xmc[45] = sr & 0x7;  sr >>= 3; 
    231                         xmc[46] = sr & 0x7;  sr >>= 3; 
    232                         xmc[47] = sr & 0x7;  sr >>= 3; 
    233                         sr = *c++; 
    234                         xmc[48] = sr & 0x7;  sr >>= 3; 
    235                         xmc[49] = sr & 0x7;  sr >>= 3; 
    236                         sr |= (uword)*c++ << 2; 
    237                         xmc[50] = sr & 0x7;  sr >>= 3; 
    238                         xmc[51] = sr & 0x7;  sr >>= 3; 
    239  
    240                         s->frame_chain = sr & 0xf; 
     222                        sr = sr >> 3 | xmc[39] << 13; 
     223                        *c++ = sr >> 8; 
     224                        sr = sr >> 3 | xmc[40] << 13; 
     225                        sr = sr >> 3 | xmc[41] << 13; 
     226                        sr = sr >> 3 | xmc[42] << 13; 
     227                        *c++ = sr >> 7; 
     228                        sr = sr >> 3 | xmc[43] << 13; 
     229                        sr = sr >> 3 | xmc[44] << 13; 
     230                        sr = sr >> 3 | xmc[45] << 13; 
     231                        *c++ = sr >> 6; 
     232                        sr = sr >> 3 | xmc[46] << 13; 
     233                        sr = sr >> 3 | xmc[47] << 13; 
     234                        *c++ = sr >> 8; 
     235                        sr = sr >> 3 | xmc[48] << 13; 
     236                        sr = sr >> 3 | xmc[49] << 13; 
     237                        sr = sr >> 3 | xmc[50] << 13; 
     238                        *c++ = sr >> 7; 
     239                        sr = sr >> 3 | xmc[51] << 13; 
     240                        sr = sr >> 4; 
     241                        *c = sr >> 8; 
     242                        s->frame_chain = *c; 
    241243                } 
    242244                else { 
    243                         sr = s->frame_chain; 
    244                         sr |= (uword)*c++ << 4;                 /* 1 */ 
    245                         LARc[0] = sr & 0x3f;  sr >>= 6; 
    246                         LARc[1] = sr & 0x3f;  sr >>= 6; 
    247                         sr = *c++; 
    248                         LARc[2] = sr & 0x1f;  sr >>= 5; 
    249                         sr |= (uword)*c++ << 3; 
    250                         LARc[3] = sr & 0x1f;  sr >>= 5; 
    251                         LARc[4] = sr & 0xf;  sr >>= 4; 
    252                         sr |= (uword)*c++ << 2; 
    253                         LARc[5] = sr & 0xf;  sr >>= 4; 
    254                         LARc[6] = sr & 0x7;  sr >>= 3; 
    255                         LARc[7] = sr & 0x7;  sr >>= 3; 
    256                         sr = *c++;                              /* 5 */ 
    257                         Nc[0] = sr & 0x7f;  sr >>= 7; 
    258                         sr |= (uword)*c++ << 1; 
    259                         bc[0] = sr & 0x3;  sr >>= 2; 
    260                         Mc[0] = sr & 0x3;  sr >>= 2; 
    261                         sr |= (uword)*c++ << 5; 
    262                         xmaxc[0] = sr & 0x3f;  sr >>= 6; 
    263 #undef  xmc 
     245                        sr = sr >> 4 | s->frame_chain << 12; 
     246                        sr = sr >> 6 | LARc[0] << 10; 
     247                        *c++ = sr >> 6; 
     248                        sr = sr >> 6 | LARc[1] << 10; 
     249                        *c++ = sr >> 8; 
     250                        sr = sr >> 5 | LARc[2] << 11; 
     251                        sr = sr >> 5 | LARc[3] << 11; 
     252                        *c++ = sr >> 6; 
     253                        sr = sr >> 4 | LARc[4] << 12; 
     254                        sr = sr >> 4 | LARc[5] << 12; 
     255                        *c++ = sr >> 6; 
     256                        sr = sr >> 3 | LARc[6] << 13; 
     257                        sr = sr >> 3 | LARc[7] << 13; 
     258                        *c++ = sr >> 8; 
     259                        sr = sr >> 7 | Nc[0] << 9; 
     260                        sr = sr >> 2 | bc[0] << 14; 
     261                        *c++ = sr >> 7; 
     262                        sr = sr >> 2 | Mc[0] << 14; 
     263                        sr = sr >> 6 | xmaxc[0] << 10; 
     264                        *c++ = sr >> 7; 
     265#undef xmc 
    264266#define xmc     (source + 12) 
    265                         xmc[0] = sr & 0x7;  sr >>= 3; 
    266                         xmc[1] = sr & 0x7;  sr >>= 3; 
    267                         sr |= (uword)*c++ << 1; 
    268                         xmc[2] = sr & 0x7;  sr >>= 3; 
    269                         xmc[3] = sr & 0x7;  sr >>= 3; 
    270                         xmc[4] = sr & 0x7;  sr >>= 3; 
    271                         sr = *c++; 
    272                         xmc[5] = sr & 0x7;  sr >>= 3; 
    273                         xmc[6] = sr & 0x7;  sr >>= 3; 
    274                         sr |= (uword)*c++ << 2;                 /* 10 */ 
    275                         xmc[7] = sr & 0x7;  sr >>= 3; 
    276                         xmc[8] = sr & 0x7;  sr >>= 3; 
    277                         xmc[9] = sr & 0x7;  sr >>= 3; 
    278                         sr |= (uword)*c++ << 1; 
    279                         xmc[10] = sr & 0x7;  sr >>= 3; 
    280                         xmc[11] = sr & 0x7;  sr >>= 3; 
    281                         xmc[12] = sr & 0x7;  sr >>= 3; 
    282                         sr = *c++; 
    283                         Nc[1] = sr & 0x7f;  sr >>= 7; 
    284                         sr |= (uword)*c++ << 1; 
    285                         bc[1] = sr & 0x3;  sr >>= 2; 
    286                         Mc[1] = sr & 0x3;  sr >>= 2; 
    287                         sr |= (uword)*c++ << 5; 
    288                         xmaxc[1] = sr & 0x3f;  sr >>= 6; 
     267 
     268                        sr = sr >> 3 | xmc[0] << 13; 
     269                        sr = sr >> 3 | xmc[1] << 13; 
     270                        sr = sr >> 3 | xmc[2] << 13; 
     271                        *c++ = sr >> 6; 
     272                        sr = sr >> 3 | xmc[3] << 13; 
     273                        sr = sr >> 3 | xmc[4] << 13; 
     274                        *c++ = sr >> 8; 
     275                        sr = sr >> 3 | xmc[5] << 13; 
     276                        sr = sr >> 3 | xmc[6] << 13; 
     277                        sr = sr >> 3 | xmc[7] << 13; 
     278                        *c++ = sr >> 7; 
     279                        sr = sr >> 3 | xmc[8] << 13; 
     280                        sr = sr >> 3 | xmc[9] << 13; 
     281                        sr = sr >> 3 | xmc[10] << 13; 
     282                        *c++ = sr >> 6; 
     283                        sr = sr >> 3 | xmc[11] << 13; 
     284                        sr = sr >> 3 | xmc[12] << 13; 
     285                        *c++ = sr >> 8; 
     286                        sr = sr >> 7 | Nc[1] << 9; 
     287                        sr = sr >> 2 | bc[1] << 14; 
     288                        *c++ = sr >> 7; 
     289                        sr = sr >> 2 | Mc[1] << 14; 
     290                        sr = sr >> 6 | xmaxc[1] << 10; 
     291                        *c++ = sr >> 7; 
    289292#undef  xmc 
    290293#define xmc     (source + 29 - 13) 
    291                         xmc[13] = sr & 0x7;  sr >>= 3; 
    292                         xmc[14] = sr & 0x7;  sr >>= 3; 
    293                         sr |= (uword)*c++ << 1;                 /* 15 */ 
    294                         xmc[15] = sr & 0x7;  sr >>= 3; 
    295                         xmc[16] = sr & 0x7;  sr >>= 3; 
    296                         xmc[17] = sr & 0x7;  sr >>= 3; 
    297                         sr = *c++; 
    298                         xmc[18] = sr & 0x7;  sr >>= 3; 
    299                         xmc[19] = sr & 0x7;  sr >>= 3; 
    300                         sr |= (uword)*c++ << 2; 
    301                         xmc[20] = sr & 0x7;  sr >>= 3; 
    302                         xmc[21] = sr & 0x7;  sr >>= 3; 
    303                         xmc[22] = sr & 0x7;  sr >>= 3; 
    304                         sr |= (uword)*c++ << 1; 
    305                         xmc[23] = sr & 0x7;  sr >>= 3; 
    306                         xmc[24] = sr & 0x7;  sr >>= 3; 
    307                         xmc[25] = sr & 0x7;  sr >>= 3; 
    308                         sr = *c++; 
    309                         Nc[2] = sr & 0x7f;  sr >>= 7; 
    310                         sr |= (uword)*c++ << 1;                 /* 20 */ 
    311                         bc[2] = sr & 0x3;  sr >>= 2; 
    312                         Mc[2] = sr & 0x3;  sr >>= 2; 
    313                         sr |= (uword)*c++ << 5; 
    314                         xmaxc[2] = sr & 0x3f;  sr >>= 6; 
     294 
     295                        sr = sr >> 3 | xmc[13] << 13; 
     296                        sr = sr >> 3 | xmc[14] << 13; 
     297                        sr = sr >> 3 | xmc[15] << 13; 
     298                        *c++ = sr >> 6; 
     299                        sr = sr >> 3 | xmc[16] << 13; 
     300                        sr = sr >> 3 | xmc[17] << 13; 
     301                        *c++ = sr >> 8; 
     302                        sr = sr >> 3 | xmc[18] << 13; 
     303                        sr = sr >> 3 | xmc[19] << 13; 
     304                        sr = sr >> 3 | xmc[20] << 13; 
     305                        *c++ = sr >> 7; 
     306                        sr = sr >> 3 | xmc[21] << 13; 
     307                        sr = sr >> 3 | xmc[22] << 13; 
     308                        sr = sr >> 3 | xmc[23] << 13; 
     309                        *c++ = sr >> 6; 
     310                        sr = sr >> 3 | xmc[24] << 13; 
     311                        sr = sr >> 3 | xmc[25] << 13; 
     312                        *c++ = sr >> 8; 
     313                        sr = sr >> 7 | Nc[2] << 9; 
     314                        sr = sr >> 2 | bc[2] << 14; 
     315                        *c++ = sr >> 7; 
     316                        sr = sr >> 2 | Mc[2] << 14; 
     317                        sr = sr >> 6 | xmaxc[2] << 10; 
     318                        *c++ = sr >> 7; 
    315319#undef  xmc 
    316320#define xmc     (source + 46 - 26) 
    317                         xmc[26] = sr & 0x7;  sr >>= 3; 
    318                         xmc[27] = sr & 0x7;  sr >>= 3; 
    319                         sr |= (uword)*c++ << 1;  
    320                         xmc[28] = sr & 0x7;  sr >>= 3; 
    321                         xmc[29] = sr & 0x7;  sr >>= 3; 
    322                         xmc[30] = sr & 0x7;  sr >>= 3; 
    323                         sr = *c++; 
    324                         xmc[31] = sr & 0x7;  sr >>= 3; 
    325                         xmc[32] = sr & 0x7;  sr >>= 3; 
    326                         sr |= (uword)*c++ << 2; 
    327                         xmc[33] = sr & 0x7;  sr >>= 3; 
    328                         xmc[34] = sr & 0x7;  sr >>= 3; 
    329                         xmc[35] = sr & 0x7;  sr >>= 3; 
    330                         sr |= (uword)*c++ << 1;                 /* 25 */ 
    331                         xmc[36] = sr & 0x7;  sr >>= 3; 
    332                         xmc[37] = sr & 0x7;  sr >>= 3; 
    333                         xmc[38] = sr & 0x7;  sr >>= 3; 
    334                         sr = *c++; 
    335                         Nc[3] = sr & 0x7f;  sr >>= 7; 
    336                         sr |= (uword)*c++ << 1;          
    337                         bc[3] = sr & 0x3;  sr >>= 2; 
    338                         Mc[3] = sr & 0x3;  sr >>= 2; 
    339                         sr |= (uword)*c++ << 5; 
    340                         xmaxc[3] = sr & 0x3f;  sr >>= 6; 
     321 
     322                        sr = sr >> 3 | xmc[26] << 13; 
     323                        sr = sr >> 3 | xmc[27] << 13; 
     324                        sr = sr >> 3 | xmc[28] << 13; 
     325                        *c++ = sr >> 6; 
     326                        sr = sr >> 3 | xmc[29] << 13; 
     327                        sr = sr >> 3 | xmc[30] << 13; 
     328                        *c++ = sr >> 8; 
     329                        sr = sr >> 3 | xmc[31] << 13; 
     330                        sr = sr >> 3 | xmc[32] << 13; 
     331                        sr = sr >> 3 | xmc[33] << 13; 
     332                        *c++ = sr >> 7; 
     333                        sr = sr >> 3 | xmc[34] << 13; 
     334                        sr = sr >> 3 | xmc[35] << 13; 
     335                        sr = sr >> 3 | xmc[36] << 13; 
     336                        *c++ = sr >> 6; 
     337                        sr = sr >> 3 | xmc[37] << 13; 
     338                        sr = sr >> 3 | xmc[38] << 13; 
     339                        *c++ = sr >> 8; 
     340                        sr = sr >> 7 | Nc[3] << 9; 
     341                        sr = sr >> 2 | bc[3] << 14; 
     342                        *c++ = sr >> 7; 
     343                        sr = sr >> 2 | Mc[3] << 14; 
     344                        sr = sr >> 6 | xmaxc[3] << 10; 
     345                        *c++ = sr >> 7; 
    341346#undef  xmc 
    342347#define xmc     (source + 63 - 39) 
    343348 
    344                         xmc[39] = sr & 0x7;  sr >>= 3; 
    345                         xmc[40] = sr & 0x7;  sr >>= 3; 
    346                         sr |= (uword)*c++ << 1; 
    347                         xmc[41] = sr & 0x7;  sr >>= 3; 
    348                         xmc[42] = sr & 0x7;  sr >>= 3; 
    349                         xmc[43] = sr & 0x7;  sr >>= 3; 
    350                         sr = *c++;                              /* 30 */ 
    351                         xmc[44] = sr & 0x7;  sr >>= 3; 
    352                         xmc[45] = sr & 0x7;  sr >>= 3; 
    353                         sr |= (uword)*c++ << 2; 
    354                         xmc[46] = sr & 0x7;  sr >>= 3; 
    355                         xmc[47] = sr & 0x7;  sr >>= 3; 
    356                         xmc[48] = sr & 0x7;  sr >>= 3; 
    357                         sr |= (uword)*c++ << 1; 
    358                         xmc[49] = sr & 0x7;  sr >>= 3; 
    359                         xmc[50] = sr & 0x7;  sr >>= 3; 
    360                         xmc[51] = sr & 0x7;  sr >>= 3; 
     349                        sr = sr >> 3 | xmc[39] << 13; 
     350                        sr = sr >> 3 | xmc[40] << 13; 
     351                        sr = sr >> 3 | xmc[41] << 13; 
     352                        *c++ = sr >> 6; 
     353                        sr = sr >> 3 | xmc[42] << 13; 
     354                        sr = sr >> 3 | xmc[43] << 13; 
     355                        *c++ = sr >> 8; 
     356                        sr = sr >> 3 | xmc[44] << 13; 
     357                        sr = sr >> 3 | xmc[45] << 13; 
     358                        sr = sr >> 3 | xmc[46] << 13; 
     359                        *c++ = sr >> 7; 
     360                        sr = sr >> 3 | xmc[47] << 13; 
     361                        sr = sr >> 3 | xmc[48] << 13; 
     362                        sr = sr >> 3 | xmc[49] << 13; 
     363                        *c++ = sr >> 6; 
     364                        sr = sr >> 3 | xmc[50] << 13; 
     365                        sr = sr >> 3 | xmc[51] << 13; 
     366                        *c++ = sr >> 8; 
    361367                } 
    362368        } 
     
    365371        { 
    366372 
    367         *c++ =   ((GSM_MAGIC & 0xF) << 4)               /* 1 */ 
    368                | ((LARc[0] >> 2) & 0xF); 
    369         *c++ =   ((LARc[0] & 0x3) << 6) 
    370                | (LARc[1] & 0x3F); 
    371         *c++ =   ((LARc[2] & 0x1F) << 3) 
    372                | ((LARc[3] >> 2) & 0x7); 
    373         *c++ =   ((LARc[3] & 0x3) << 6) 
    374                | ((LARc[4] & 0xF) << 2) 
    375                | ((LARc[5] >> 2) & 0x3); 
    376         *c++ =   ((LARc[5] & 0x3) << 6) 
    377                | ((LARc[6] & 0x7) << 3) 
    378                | (LARc[7] & 0x7); 
    379  
    380  
    381         *c++ =   ((Nc[0] & 0x7F) << 1) 
    382  
    383  
    384                | ((bc[0] >> 1) & 0x1); 
    385         *c++ =   ((bc[0] & 0x1) << 7) 
    386  
    387  
    388                | ((Mc[0] & 0x3) << 5) 
    389  
    390                | ((xmaxc[0] >> 1) & 0x1F); 
    391         *c++ =   ((xmaxc[0] & 0x1) << 7) 
     373                *c++ =   ((GSM_MAGIC & 0xF) << 4)               /* 1 */ 
     374                       | ((LARc[0] >> 2) & 0xF); 
     375                *c++ =   ((LARc[0] & 0x3) << 6) 
     376                       | (LARc[1] & 0x3F); 
     377                *c++ =   ((LARc[2] & 0x1F) << 3) 
     378                       | ((LARc[3] >> 2) & 0x7); 
     379                *c++ =   ((LARc[3] & 0x3) << 6) 
     380                       | ((LARc[4] & 0xF) << 2) 
     381                       | ((LARc[5] >> 2) & 0x3); 
     382                *c++ =   ((LARc[5] & 0x3) << 6) 
     383                       | ((LARc[6] & 0x7) << 3) 
     384                       | (LARc[7] & 0x7); 
     385 
     386 
     387                *c++ =   ((Nc[0] & 0x7F) << 1) 
     388 
     389 
     390                       | ((bc[0] >> 1) & 0x1); 
     391                *c++ =   ((bc[0] & 0x1) << 7) 
     392 
     393 
     394                       | ((Mc[0] & 0x3) << 5) 
     395 
     396                       | ((xmaxc[0] >> 1) & 0x1F); 
     397                *c++ =   ((xmaxc[0] & 0x1) << 7) 
    392398 
    393399#undef xmc 
    394400#define xmc     (source + 12) 
    395401 
    396                | ((xmc[0] & 0x7) << 4) 
    397                | ((xmc[1] & 0x7) << 1) 
    398                | ((xmc[2] >> 2) & 0x1); 
    399         *c++ =   ((xmc[2] & 0x3) << 6) 
    400                | ((xmc[3] & 0x7) << 3) 
    401                | (xmc[4] & 0x7); 
    402         *c++ =   ((xmc[5] & 0x7) << 5)                  /* 10 */ 
    403                | ((xmc[6] & 0x7) << 2) 
    404                | ((xmc[7] >> 1) & 0x3); 
    405         *c++ =   ((xmc[7] & 0x1) << 7) 
    406                | ((xmc[8] & 0x7) << 4) 
    407                | ((xmc[9] & 0x7) << 1) 
    408                | ((xmc[10] >> 2) & 0x1); 
    409         *c++ =   ((xmc[10] & 0x3) << 6) 
    410                | ((xmc[11] & 0x7) << 3) 
    411                | (xmc[12] & 0x7); 
    412  
    413  
    414         *c++ =   ((Nc[1] & 0x7F) << 1) 
    415  
    416  
    417                | ((bc[1] >> 1) & 0x1); 
    418         *c++ =   ((bc[1] & 0x1) << 7) 
    419  
    420  
    421                | ((Mc[1] & 0x3) << 5) 
    422  
    423  
    424                | ((xmaxc[1] >> 1) & 0x1F); 
    425         *c++ =   ((xmaxc[1] & 0x1) << 7) 
     402                       | ((xmc[0] & 0x7) << 4) 
     403                       | ((xmc[1] & 0x7) << 1) 
     404                       | ((xmc[2] >> 2) & 0x1); 
     405                *c++ =   ((xmc[2] & 0x3) << 6) 
     406                       | ((xmc[3] & 0x7) << 3) 
     407                       | (xmc[4] & 0x7); 
     408                *c++ =   ((xmc[5] & 0x7) << 5)                  /* 10 */ 
     409                       | ((xmc[6] & 0x7) << 2) 
     410                       | ((xmc[7] >> 1) & 0x3); 
     411                *c++ =   ((xmc[7] & 0x1) << 7) 
     412                       | ((xmc[8] & 0x7) << 4) 
     413                       | ((xmc[9] & 0x7) << 1) 
     414                       | ((xmc[10] >> 2) & 0x1); 
     415                *c++ =   ((xmc[10] & 0x3) << 6) 
     416                       | ((xmc[11] & 0x7) << 3) 
     417                       | (xmc[12] & 0x7); 
     418 
     419 
     420                *c++ =   ((Nc[1] & 0x7F) << 1) 
     421 
     422 
     423                       | ((bc[1] >> 1) & 0x1); 
     424                *c++ =   ((bc[1] & 0x1) << 7) 
     425 
     426 
     427                       | ((Mc[1] & 0x3) << 5) 
     428 
     429 
     430                       | ((xmaxc[1] >> 1) & 0x1F); 
     431                *c++ =   ((xmaxc[1] & 0x1) << 7) 
    426432 
    427433#undef  xmc 
    428434#define xmc     (source + 29 - 13) 
    429435 
    430                | ((xmc[13] & 0x7) << 4) 
    431                | ((xmc[14] & 0x7) << 1) 
    432                | ((xmc[15] >> 2) & 0x1); 
    433         *c++ =   ((xmc[15] & 0x3) << 6) 
    434                | ((xmc[16] & 0x7) << 3) 
    435                | (xmc[17] & 0x7); 
    436         *c++ =   ((xmc[18] & 0x7) << 5) 
    437                | ((xmc[19] & 0x7) << 2) 
    438                | ((xmc[20] >> 1) & 0x3); 
    439         *c++ =   ((xmc[20] & 0x1) << 7) 
    440                | ((xmc[21] & 0x7) << 4) 
    441                | ((xmc[22] & 0x7) << 1) 
    442                | ((xmc[23] >> 2) & 0x1); 
    443         *c++ =   ((xmc[23] & 0x3) << 6) 
    444                | ((xmc[24] & 0x7) << 3) 
    445                | (xmc[25] & 0x7); 
    446  
    447  
    448         *c++ =   ((Nc[2] & 0x7F) << 1)                  /* 20 */ 
    449  
    450  
    451                | ((bc[2] >> 1) & 0x1); 
    452         *c++ =   ((bc[2] & 0x1) << 7) 
    453  
    454  
    455                | ((Mc[2] & 0x3) << 5) 
    456  
    457  
    458                | ((xmaxc[2] >> 1) & 0x1F); 
    459         *c++ =   ((xmaxc[2] & 0x1) << 7) 
     436                       | ((xmc[13] & 0x7) << 4) 
     437                       | ((xmc[14] & 0x7) << 1) 
     438                       | ((xmc[15] >> 2) & 0x1); 
     439                *c++ =   ((xmc[15] & 0x3) << 6) 
     440                       | ((xmc[16] & 0x7) << 3) 
     441                       | (xmc[17] & 0x7); 
     442                *c++ =   ((xmc[18] & 0x7) << 5) 
     443                       | ((xmc[19] & 0x7) << 2) 
     444                       | ((xmc[20] >> 1) & 0x3); 
     445                *c++ =   ((xmc[20] & 0x1) << 7) 
     446                       | ((xmc[21] & 0x7) << 4) 
     447                       | ((xmc[22] & 0x7) << 1) 
     448                       | ((xmc[23] >> 2) & 0x1); 
     449                *c++ =   ((xmc[23] & 0x3) << 6) 
     450                       | ((xmc[24] & 0x7) << 3) 
     451                       | (xmc[25] & 0x7); 
     452 
     453 
     454                *c++ =   ((Nc[2] & 0x7F) << 1)                  /* 20 */ 
     455 
     456 
     457                       | ((bc[2] >> 1) & 0x1); 
     458                *c++ =   ((bc[2] & 0x1) << 7) 
     459 
     460 
     461                       | ((Mc[2] & 0x3) << 5) 
     462 
     463 
     464                       | ((xmaxc[2] >> 1) & 0x1F); 
     465                *c++ =   ((xmaxc[2] & 0x1) << 7) 
    460466 
    461467#undef  xmc 
    462468#define xmc     (source + 46 - 26) 
    463469 
    464                | ((xmc[26] & 0x7) << 4) 
    465                | ((xmc[27] & 0x7) << 1) 
    466                | ((xmc[28] >> 2) & 0x1); 
    467         *c++ =   ((xmc[28] & 0x3) << 6) 
    468                | ((xmc[29] & 0x7) << 3) 
    469                | (xmc[30] & 0x7); 
    470         *c++ =   ((xmc[31] & 0x7) << 5) 
    471                | ((xmc[32] & 0x7) << 2) 
    472                | ((xmc[33] >> 1) & 0x3); 
    473         *c++ =   ((xmc[33] & 0x1) << 7) 
    474                | ((xmc[34] & 0x7) << 4) 
    475                | ((xmc[35] & 0x7) << 1) 
    476                | ((xmc[36] >> 2) & 0x1); 
    477         *c++ =   ((xmc[36] & 0x3) << 6) 
    478                | ((xmc[37] & 0x7) << 3) 
    479                | (xmc[38] & 0x7); 
    480  
    481  
    482         *c++ =   ((Nc[3] & 0x7F) << 1) 
    483  
    484  
    485                | ((bc[3] >> 1) & 0x1); 
    486         *c++ =   ((bc[3] & 0x1) << 7) 
    487  
    488  
    489                | ((Mc[3] & 0x3) << 5) 
    490  
    491  
    492                | ((xmaxc[3] >> 1) & 0x1F); 
    493         *c++ =   ((xmaxc[3] & 0x1) << 7) 
     470                       | ((xmc[26] & 0x7) << 4) 
     471                       | ((xmc[27] & 0x7) << 1) 
     472                       | ((xmc[28] >> 2) & 0x1); 
     473                *c++ =   ((xmc[28] & 0x3) << 6) 
     474                       | ((xmc[29] & 0x7) << 3) 
     475                       | (xmc[30] & 0x7); 
     476                *c++ =   ((xmc[31] & 0x7) << 5) 
     477                       | ((xmc[32] & 0x7) << 2) 
     478                       | ((xmc[33] >> 1) & 0x3); 
     479                *c++ =   ((xmc[33] & 0x1) << 7) 
     480                       | ((xmc[34] & 0x7) << 4) 
     481                       | ((xmc[35] & 0x7) << 1) 
     482                       | ((xmc[36] >> 2) & 0x1); 
     483                *c++ =   ((xmc[36] & 0x3) << 6) 
     484                       | ((xmc[37] & 0x7) << 3) 
     485                       | (xmc[38] & 0x7); 
     486 
     487 
     488                *c++ =   ((Nc[3] & 0x7F) << 1) 
     489 
     490 
     491                       | ((bc[3] >> 1) & 0x1); 
     492                *c++ =   ((bc[3] & 0x1) << 7) 
     493 
     494 
     495                       | ((Mc[3] & 0x3) << 5) 
     496 
     497 
     498                       | ((xmaxc[3] >> 1) & 0x1F); 
     499                *c++ =   ((xmaxc[3] & 0x1) << 7) 
    494500 
    495501#undef  xmc 
    496502#define xmc     (source + 63 - 39) 
    497503 
    498                | ((xmc[39] & 0x7) << 4) 
    499                | ((xmc[40] & 0x7) << 1) 
    500                | ((xmc[41] >> 2) & 0x1); 
    501         *c++ =   ((xmc[41] & 0x3) << 6)                 /* 30 */ 
    502                | ((xmc[42] & 0x7) << 3) 
    503                | (xmc[43] & 0x7); 
    504         *c++ =   ((xmc[44] & 0x7) << 5) 
    505                | ((xmc[45] & 0x7) << 2) 
    506                | ((xmc[46] >> 1) & 0x3); 
    507         *c++ =   ((xmc[46] & 0x1) << 7) 
    508                | ((xmc[47] & 0x7) << 4) 
    509                | ((xmc[48] & 0x7) << 1) 
    510                | ((xmc[49] >> 2) & 0x1); 
    511         *c++ =   ((xmc[49] & 0x3) << 6) 
    512                | ((xmc[50] & 0x7) << 3) 
    513                | (xmc[51] & 0x7); 
     504                       | ((xmc[39] & 0x7) << 4) 
     505                       | ((xmc[40] & 0x7) << 1) 
     506                       | ((xmc[41] >> 2) & 0x1); 
     507                *c++ =   ((xmc[41] & 0x3) << 6)                 /* 30 */ 
     508                       | ((xmc[42] & 0x7) << 3) 
     509                       | (xmc[43] & 0x7); 
     510                *c++ =   ((xmc[44] & 0x7) << 5) 
     511                       | ((xmc[45] & 0x7) << 2) 
     512                       | ((xmc[46] >> 1) & 0x3); 
     513                *c++ =   ((xmc[46] & 0x1) << 7) 
     514                       | ((xmc[47] & 0x7) << 4) 
     515                       | ((xmc[48] & 0x7) << 1) 
     516                       | ((xmc[49] >> 2) & 0x1); 
     517                *c++ =   ((xmc[49] & 0x3) << 6) 
     518                       | ((xmc[50] & 0x7) << 3) 
     519                       | (xmc[51] & 0x7); 
    514520        } 
    515521} 
Note: See TracChangeset for help on using the changeset viewer.