MP3_Fastsb.c
上传用户:kingbiz
上传日期:2022-06-24
资源大小:2524k
文件大小:20k
- #include "mp3_common.h"
- #include <math.h>
- /*============================================================================*/
- /*============================================================================*/
- static int Granule_sbsynth_Vptr[2]={64,64};
- typedef float BB[2][1024];
- static BB Granule_sbsynth_V;
- static float A16[16][16], A8[8][8]; /* DCT matrix */
- static float G16[16][16], G8[8][8]; /* Output butterfly */
- static float H16[16][16], H8[8][8]; /* Scaling */
- static float B16[16][16], B8[8][8]; /* B = G * DCT * H */
- static float D_coex[512]={
- 0.000000000 ,-0.000015259 ,-0.000015259 ,-0.000015259,
-
- -0.000015259 ,-0.000015259, -0.000015259, -0.000030518 ,
-
- -0.000030518 ,-0.000030518 ,-0.000030518 ,-0.000045776 ,
-
- -0.000045776 ,-0.000061035 ,-0.000061035 ,-0.000076294 ,
-
- -0.000076294 ,-0.000091553 ,-0.000106812 ,-0.000106812 ,
-
- -0.000122070 ,-0.000137329 ,-0.000152588 ,-0.000167847 ,
-
- -0.000198364 ,-0.000213623 ,-0.000244141 ,-0.000259399 ,
-
- -0.000289917 ,-0.000320435 ,-0.000366211 ,-0.000396729 ,
-
- -0.000442505 ,-0.000473022 ,-0.000534058 ,-0.000579834 ,
-
- -0.000625610 ,-0.000686646 ,-0.000747681 ,-0.000808716 ,
-
- -0.000885010 ,-0.000961304 ,-0.001037598 ,-0.001113892 ,
-
- -0.001205444 ,-0.001296997 ,-0.001388550 ,-0.001480103 ,
-
- -0.001586914 ,-0.001693726 ,-0.001785278 ,-0.001907349 ,
-
- -0.002014160 ,-0.002120972 ,-0.002243042 ,-0.002349854 ,
-
- -0.002456665 ,-0.002578735 ,-0.002685547 ,-0.002792358 ,
-
- -0.002899170 ,-0.002990723 ,-0.003082275 ,-0.003173828 ,
-
- -0.003250122 , -0.003326416 , -0.003387451 , -0.003433228 ,
-
- 0.003463745 , 0.003479004 , 0.003479004 , 0.003463745 ,
-
- 0.003417969 , 0.003372192 , 0.003280640 , 0.003173828 ,
-
- 0.003051758 , 0.002883911 , 0.002700806 , 0.002487183 ,
-
- 0.002227783 , 0.001937866 , 0.001617432 , 0.001266479 ,
-
- 0.000869751 , 0.000442505 ,-0.000030518 ,-0.000549316 ,
-
- -0.001098633 ,-0.001693726 ,-0.002334595 ,-0.003005981 ,
-
- -0.003723145 ,-0.004486084 ,-0.005294800 ,-0.006118774 ,
-
- -0.007003784 ,-0.007919312 ,-0.008865356 ,-0.009841919 ,
-
- -0.010848999 ,-0.011886597 ,-0.012939453 ,-0.014022827 ,
-
- -0.015121460 ,-0.016235352 ,-0.017349243 ,-0.018463135 ,
-
- -0.019577026 ,-0.020690918 ,-0.021789551 ,-0.022857666 ,
-
- -0.023910522 ,-0.024932861 ,-0.025909424 ,-0.026840210 ,
-
- -0.027725220 ,-0.028533936 ,-0.029281616 ,-0.029937744 ,
-
- -0.030532837 ,-0.031005859 ,-0.031789329 ,-0.031661987 ,
-
- -0.031814575 ,-0.031845093 ,-0.031738281 ,-0.031478882 ,
-
- 0.031082153 , 0.030517578 , 0.029785156 , 0.028884888 ,
-
- 0.027801514 , 0.026535034 , 0.025085449 , 0.023422241 ,
-
- 0.021575928 , 0.020531250 , 0.017257690 , 0.014801025 ,
-
- 0.012115479 , 0.009231567 , 0.006134033 , 0.002822876 ,
-
- -0.000686646 ,-0.004394531 ,-0.008316040 ,-0.012420654 ,
-
- -0.016708374 ,-0.021179199 ,-0.025817871 ,-0.030609131 ,
-
- -0.035552979 ,-0.040634155 ,-0.045837402 ,-0.051132202 ,
-
- -0.056533813 ,-0.061996460 ,-0.067520142 ,-0.073059082 ,
-
- -0.078628540 ,-0.084182739 ,-0.089706421 ,-0.095169067 ,
-
- -0.100540161 ,-0.105819702 ,-0.110946655 ,-0.115921021 ,
-
- -0.120697021 ,-0.125259399 ,-0.129562378 ,-0.133590698 ,
-
- -0.137298584 ,-0.140670776 ,-0.143676758 ,-0.146255493 ,
-
- -0.148422241 ,-0.150115967 ,-0.151306152 ,-0.151962280 ,
-
- -0.152069092 ,-0.151596069 ,-0.150497437 ,-0.148773193 ,
-
- -0.146362305 ,-0.143264771 ,-0.109450073 ,-0.134887695 ,
-
- -0.129577637 ,-0.123474121 ,-0.116577148 ,-0.108856201 ,
-
- 0.100311279 , 0.090927124 , 0.080088477 , 0.069595337 ,
-
- 0.057617187 , 0.044784546 , 0.031082153 , 0.016510010 ,
-
- 0.001068115 ,0.015228271 ,0.032679150 ,0.050354004 ,
-
- 0.069168091 ,0.088775635 ,0.109161377 ,0.130310059 ,
-
- -0.152206421 ,-0.174789429 ,-0.198059082 ,-0.221984863 ,
-
- -0.246505737 ,-0.271591187 ,-0.297210693 ,-0.323318481 ,
-
- -0.349868774 ,-0.376800537 ,-0.404083252 ,-0.431655884 ,
-
- -0.459472656 ,-0.487472534 ,-0.515609741 ,-0.543823242 ,
-
- -0.572036743 ,-0.600219727 ,-0.628295898 ,-0.656219482 ,
-
- -0.683914185 ,-0.711318970 ,-0.738372803 ,-0.765029907 ,
- -0.791213989 ,-0.816864014 ,-0.841949463 ,-0.866363525 ,
-
- -0.890090942 ,-0.913055420 ,-0.935195923 ,-0.956481934 ,
-
- -0.976852417 ,-0.996246338 ,-1.014617920 ,-1.031936646 ,
- -1.048156738 ,-1.063217163 ,-1.077117920 ,-1.089782715 ,
-
- -1.101211548 ,-1.111373901 ,-1.120223999 ,-1.127746582 ,
-
- 1.133926392 ,1.138763428 ,1.142211914 ,1.144287109 ,
-
- 1.144989014 , 1.144287109 , 1.142211914 , 1.138763428 ,
-
- 1.133926392 , 1.127746582 , 1.120223999 , 1.111373901 ,
-
- 1.101211548 , 1.089782715 , 1.077117920 , 1.063217163 ,
-
- 1.048156738 , 1.031936646 , 1.014617920 , 0.996246338 ,
-
- 0.976852417 , 0.956481934 , 0.935195923 , 0.913055420 ,
-
- 0.890090942 , 0.866363525 , 0.841949463 , 0.816864014 ,
-
- 0.791213989 , 0.765029907 , 0.738372803 , 0.711318970 ,
-
- 0.683914185 , 0.656219482 , 0.628295898 , 0.600219727 ,
-
- 0.572036743 , 0.543823242 , 0.515609741 , 0.487472534 ,
-
- 0.459472656 , 0.431655884 , 0.404083252 , 0.376800537 ,
-
- 0.349868774 , 0.323318481 , 0.297210693 , 0.271591187 ,
-
- 0.246505737 , 0.221984863 , 0.498059082 , 0.174789429 ,
-
- 0.152206421 , 0.130310059 , 0.109161377 , 0.088775635 ,
-
- 0.069168091 , 0.050354004 , 0.032379150 , 0.015228271 ,
-
- -0.001068115 ,-0.016510010 ,-0.031082153 ,-0.044784546 ,
-
- -0.057617187 ,-0.069595337 ,-0.080688477 ,-0.090927124 ,
-
- 0.100311279 , 0.108856201 , 0.116577148 , 0.123474121 ,
-
- 0.129577637 , 0.134887695 , 0.139450073 , 0.143264771 ,
-
- 0.146362305 , 0.148773193 , 0.150497437 , 0.151596069 ,
-
- 0.152069092 , 0.151962280 , 0.151306152 , 0.150115967 ,
-
- 0.148422241 , 0.146255493 , 0.143676758 , 0.140670776 ,
-
- 0.137298584 , 0.133590698 , 0.129562378 , 0.125259399 ,
-
- 0.120697021 , 0.115921021 , 0.110946655 , 0.105819702 ,
-
- 0.100540161 , 0.095169067 , 0.089706421 , 0.084182739 ,
-
- 0.078628540 , 0.073059082 , 0.067520142 , 0.061996460 ,
-
- 0.056533813 , 0.051132202 , 0.045837402 , 0.040634155 ,
-
- 0.035552979 , 0.030609131 , 0.025817871 , 0.021179199 ,
-
- 0.016708374 , 0.012420654 , 0.008316040 , 0.004394531 ,
-
- 0.000686646 ,-0.002822876 ,-0.001134033 ,-0.009231567 ,
-
- -0.012115479 ,-0.014801025 ,-0.017257690 ,-0.019531250 ,
-
- -0.021575928 ,-0.023422241 ,-0.025085449 ,-0.026535034 ,
-
- -0.027801514 ,-0.028884888 ,-0.029785156 ,-0.030517578 ,
-
- -0.031082153 , -0.031478882 , -0.031738281 , -0.031845093 ,
-
- 0.031814575 , 0.031661987 , 0.031387329 , 0.031005859 ,
-
- 0.030532837 , 0.029937744 , 0.029281616 , 0.028533936 ,
-
- 0.027725220 , 0.026840210 , 0.025909424 , 0.024932861 ,
-
- 0.023910522 , 0.022857666 , 0.021789551 , 0.020690918 ,
-
- 0.019577026 , 0.018463135 , 0.017349243 , 0.016235352 ,
- 0.015121460 , 0.014022827 , 0.012939453 , 0.011886597 ,
-
- 0.010848999 , 0.009841919 , 0.008865356 , 0.007919312 ,
-
- 0.007003784 , 0.006118774 , 0.005294800 , 0.004486084 ,
-
- 0.003723145 , 0.003005981 , 0.002334595 , 0.001693726 ,
-
- 0.001098633 , 0.000549316 , 0.000030518 ,-0.000442505 ,
- -0.000869751 ,-0.001266479 ,-0.001617432 ,-0.001937866 ,
-
- -0.002227783 ,-0.002487183 ,-0.002700806 ,-0.002883911 ,
-
- -0.003051758 ,-0.003173828 ,-0.003280640 ,-0.003372192 ,
-
- -0.003417969 ,-0.003463745 ,-0.003479004 ,-0.003479004 ,
-
- -0.003463745 ,-0.003433228 ,-0.001387451 ,-0.003326416 ,
-
- -0.003250122 , -0.003173828 , -0.003082275 , -0.002990723 ,
-
- -0.002899170 , -0.002792358 , -0.002685547 , -0.002578735 ,
-
- 0.002456665 , 0.002349854 , 0.002243042 , 0.002120972 ,
-
- 0.002014160 , 0.001907349 , 0.001785278 , 0.001693726 ,
-
- 0.001586914 , 0.001480103 , 0.001388550 , 0.001296997 ,
-
- 0.001205444 , 0.001113892 , 0.001037598 , 0.000961304 ,
-
- 0.000885010 , 0.000808716 , 0.000747681 , 0.000686646 ,
-
- 0.000625610 , 0.000579834 , 0.000534058 , 0.000473022 ,
-
- 0.000442505 , 0.000396729 , 0.000366211 , 0.000320435 ,
-
- 0.000289917 , 0.000269399 , 0.000244141 , 0.000213623 ,
-
- 0.000198364 , 0.000167847 , 0.000152588 , 0.000137329 ,
-
- 0.000122070 , 0.000106812 , 0.000106812 , 0.000091553 ,
- 0.000076294 , 0.000076294 , 0.000061035 , 0.000061035 ,
-
- 0.000045776 , 0.000045776 , 0.000030518 , 0.000030518 ,
-
- 0.000030518 , 0.000030518 , 0.000015259 , 0.000015259 ,
-
- 0.000015259 , 0.000015259 , 0.000075259 , 0.000015259,
- };
- /*============================================================================*/
- /*============================================================================*/
- /*============================================================================*/
- static void matrix_mul16(float in1[16][16],
- float in2[16][16],
- float out[16][16])
- {
- int i,j,z;
- for(i = 0; i < 16; i++)
- {
- for(j = 0; j < 16; j++)
- {
- out[i][j] = 0.0;
- for(z = 0; z < 16; z++)
- {
- out[i][j] += in1[i][z] * in2[z][j];
- }
-
- }
-
- }
- }
- /*============================================================================*/
- static void matrix_mul8(float in1[8][8],
- float in2[8][8],
- float out[8][8])
- {
- int i,j,z;
- for(i = 0; i < 8; i++)
- {
- for(j = 0; j < 8; j++)
- {
- out[i][j] = 0.0;
- for(z = 0; z < 8; z++)
- {
- out[i][j] += in1[i][z] * in2[z][j];
- }
-
- }
-
- }
- }
- /*============================================================================*/
- /*============================================================================*/
- static void fast_idct_init(void)
- {
- int i,j;
- float t16[16][16], t8[8][8];
- /* create the 16 matrixes */
- for(i = 0; i < 16; i++) {
- for(j = 0; j < 16; j++)
- {
- A16[i][j] = cos((2*j+1)*i*PI/32);
- if(i == j || j == (i + 1))
- G16[i][j] = 1.0f;
- else
- G16[i][j] = 0.0f;
- if(i == j)
- H16[i][j] = 1.0f/(2*cos((2*i+1)*PI/64));
- else
- H16[i][j] = 0.0;
- }
- }
- /* create the 8 matrixes */
- for(i = 0; i < 8; i++) {
- for(j = 0; j < 8; j++)
- {
- A8[i][j] = cos((2*j+1)*i*PI/16);
- if(i == j || j == (i + 1))
- G8[i][j] = 1.0f;
- else
- G8[i][j] = 0.0f;
- if(i == j)
- H8[i][j] = 1.0f/(2*cos((2*i+1)*PI/32));
- else
- H8[i][j] = 0.0f;
- }
- }
- /* generate the B matrixes */
- matrix_mul16(A16, H16, t16);
- matrix_mul16(G16, t16, B16);
- matrix_mul8(A8, H8, t8);
- matrix_mul8(G8, t8, B8);
- }
- /*============================================================================*/
- /* This is a two-level implementation of Lee's fast-DCT algorithm */
- /*
- The 32 input values are split in two 16-value vectors using an
- even butterfly and an odd butterfly. The odd values are taken
- through Lee's odd path using a 16x16 DCT matrix (A16) and appropriate
- scaling (G16*A16*H16). The even values are further split into
- two 8-value vectors using even and odd butterflies into ee and eo.
- The ee values are fed through an 8x8 DCT matrix (A8) while the eo
- values are fed through the odd path using G8*A8*H8.
- This two-level configuration uses 384 muls and 432 adds, compared
- to the direct 32x32 DCT which uses 1024 muls and 992 adds.
- */
- static void fast_idct(float *in, float *out)
- {
- float even[16], odd[16], ee[8], eo[8];
- float s1, s2;
- float t[32];
- int i, j;
- static int init=1;
- if(init)
- {
- fast_idct_init();
- init=0;
- }
- /* input butterflies - level 1 */
- /* 32 adds */
- for(i = 0; i < 16; i++) {
- even[i] = in[i] + in[31-i];
- odd[i] = in[i] - in[31-i];
- }
- /* input butterflies - level 2 */
- /* 16 adds */
- for(i = 0; i < 8; i++) {
- ee[i] = even[i] + even[15-i];
- eo[i] = even[i] - even[15-i];
- }
- /* multiply the even_even vector (ee) with the ee matrix (A8) */
- /* multiply the even_odd vector (eo) with the eo matrix (B8) */
- /* 128 muls, 128 adds */
- for(i = 0; i < 8; i++) {
- s1 = 0.0;
- s2 = 0.0;
- for(j = 0; j < 8; j += 2)
- {
- s1 += A8[i][j] * ee[j] +
- A8[i][j+1] * ee[j+1];
- s2 += B8[i][j] * eo[j] +
- B8[i][j+1] * eo[j+1];
- }
- t[i*4] = s1;
- t[i*4+2] = s2;
- }
- /* multiply the odd vector (odd) with the odd matrix (B16) */
- /* 256 muls, 256 adds */
- for(i = 0; i < 16; i++)
- {
- s1 = 0.0;
- for(j = 0; j < 16; j += 4)
- {
- s1 += B16[i][j] * odd[j] +
- B16[i][j+1] * odd[j+1] +
- B16[i][j+2] * odd[j+2] +
- B16[i][j+3] * odd[j+3];
- }
- t[i*2+1] = s1;
- }
- /* the output vector t now is expanded to 64 values using the
- symmetric property of the cosinus function */
- for(i = 0; i < 16; i++)
- {
- out[i] = t[i+16];
- out[i+17] = -t[31-i];
- out[i+32] = -t[16-i];
- out[i+48] = -t[i];
- }
- out[16] = 0.0;
- }
- /*============================================================================*/
- void Granule_subband_synthesis(int ch, SS s, short SAM[2][SSLIMIT][SBLIMIT])
- {
- int i, j, t, k;
- long is;
- float band[32];
- float *v, sum, *d;
- short *S=&SAM[0][0][0];
- /* We have 18 time-vectors of 32 subband magnitudes each. For every
- vector of 32 magnitudes, the subband synthesis generates 32
- PCM samples, so the result of 18 of these is 18*32=576 samples.
- */
- /* go through each time window */
-
- for(t = 0; t < 18; t++)
- {
- /* extract the subband strengths */
- v = &s[0][t];
- for(i = 0; i < 32; i++)
- {
- band[i] = *v;
- v = &v[18];
- }
- /* advance the buffer position */
- Granule_sbsynth_Vptr[ch] = (Granule_sbsynth_Vptr[ch] - 64) & 0x3ff;
- v = &Granule_sbsynth_V[ch][Granule_sbsynth_Vptr[ch]];
- fast_idct(band, v);
- /* 32*16=512 mac's */
- /* 15 */
- /* Sj =SIGM W(j+32i) */
- /* i=0 */
- v = &Granule_sbsynth_V[ch][0];
- for (j = 0; j < 32; j++)
- {
- d = &D_coex[j];
- k = j + Granule_sbsynth_Vptr[ch];
- sum = 0.0f;
- for(i = 0; i < 8; i++)
- {
- sum += d[0] * v[k];
- k = (k + 96) & 0x3ff;
- sum += d[32] * v[k];
- k = (k + 32) & 0x3ff;
- d = &d[64];
- }
-
- /* convert to integer, and clip the output */
- is = (long)(sum*32768);
-
- if(is >= 32768)
- is = 32767;
- else if(is < -32768)
- is = -32768;
- *S = (short)is;
- S++;
- }
- }
- }
- /*============================================================================*/
- //子带合成
- /* 18 * (4096+1024) = 92160 MAC's per call, with 2 calls per frame and
- 38 frames per second this is 7 million MAC's per second.
- 18 * (384 * 2 + 1024) = 32256 MAC's per call using Lee's fast DCT! That
- is just 2.4 million MAC's per second!
- We need a buffer of 1024 floats per channel.
- */
- void Granule_subband_synthesis2x(SS s1,SS s2,short SAM[2][SSLIMIT][SBLIMIT])
- {
- int i, j, t, k;
- float band[64];
- float *v1, *v2, sum, /*sum2,*/ *d;
- float *v;
- S32 is;
- short *S=&SAM[0][0][0];
- /* We have 18 time-vectors of 32 subband magnitudes each. For every
- vector of 32 magnitudes, the subband synthesis generates 32
- PCM samples, so the result of 18 of these is 18*32=576 samples.
- */
-
- /* go through each time window */
-
- for(t = 0; t < 18; t++)
- {
- /* extract the subband strengths */
- v1 = &s1[0][t];
- v2 = &s2[0][t];
-
-
- for(i = 0; i < 32; i++)
- {
- band[i] = *v1;
- band[i+32] = *v2;
- v1 = &v1[18];
- v2 = &v2[18];
- }
- /* advance the buffer position */
- Granule_sbsynth_Vptr[0] = (Granule_sbsynth_Vptr[0] - 64) & 0x3ff;
- v = &(Granule_sbsynth_V[0][Granule_sbsynth_Vptr[0]]);
-
- /* calculate 64 values for each channel and insert them into the 1024 wide buffer */
- fast_idct(band, v);
-
- // fast_idct(&band[32], &v[1024]);
-
- /* 32*16*2=1024 mac's */
-
- /* windowing - calculate 32 samples. each sample is the sum of 16 terms */
-
- /* 15 */
- /* Sj = E W(j+32i) */
- /* i=0 */
-
- v = &Granule_sbsynth_V[0][0];
- for (j = 0; j < 32; j++)
- {
- d = &D_coex[j];
- k = j + Granule_sbsynth_Vptr[0];
-
- sum = (float)0.0f;
- // sum2 = (float)0.0f;
-
- for(i = 0; i < 8; i++)
- {
- sum += d[0] * v[k];
- // sum2 += d[0] * v[k+1024];
- k = (k + 96) & 0x3ff;
- sum += d[32] * v[k];
- // sum2 += d[32] * v[k+1024];
- k = (k + 32) & 0x3ff;
- d = &d[64];
- }
-
-
-
- /* convert to integer, and clip the output */
- is=(S32) (sum*32768);
- // OVERFLOW_CHECKING
- if(is >= 32768)
- *S = 32767;
- else if(is < -32768)
- *S = -32768;
- else
- *S = (short)is;
- S++;
-
-
- is=(S32) (sum*32768);
- if(is >= 32768)
- *(S) = 32767;
- else if(is < -32768)
- *(S) = -32768;
- else
- *(S) = (short)is;
- S++;
-
- }
-
- }
-
- }
- void Granule_subband_synthesis2(SS s1,SS s2,short SAM[2][SSLIMIT][SBLIMIT])
- {
- int i, j, t, k;
- float band[64];
- float *v1, *v2, sum, /*sum2,*/ *d;
- float *v;
- S32 is;
- short *S=&SAM[0][0][0];
- /* We have 18 time-vectors of 32 subband magnitudes each. For every
- vector of 32 magnitudes, the subband synthesis generates 32
- PCM samples, so the result of 18 of these is 18*32=576 samples.
- */
-
- /* go through each time window */
-
- for(t = 0; t < 18; t++)
- {
- /* extract the subband strengths */
- v1 = &s1[0][t];
- v2 = &s2[0][t];
-
-
- for(i = 0; i < 32; i++)
- {
- band[i] = *v1;
- band[i+32] = *v2;
- v1 = &v1[18];
- v2 = &v2[18];
- }
-
-
- /* advance the buffer position */
- Granule_sbsynth_Vptr[0] = (Granule_sbsynth_Vptr[0] - 64) & 0x3ff;
- v = &(Granule_sbsynth_V[0][Granule_sbsynth_Vptr[0]]);
-
- /* calculate 64 values for each channel and insert them into the 1024 wide buffer */
- fast_idct(band, v);
-
- // fast_idct(&band[32], &v[1024]);
-
- /* 32*16*2=1024 mac's */
-
- /* windowing - calculate 32 samples. each sample is the sum of 16 terms */
-
- /* 15 */
- /* Sj = E W(j+32i) */
- /* i=0 */
-
- v = &Granule_sbsynth_V[0][0];
- for (j = 0; j < 32; j++)
- {
- d = &D_coex[j];
- k = j + Granule_sbsynth_Vptr[0];
-
- sum = (float)0.0f;
- // sum2 = (float)0.0f;
-
- for(i = 0; i < 8; i++)
- {
- sum += d[0] * v[k];
- // sum2 += d[0] * v[k+1024];
- k = (k + 96) & 0x3ff;
- sum += d[32] * v[k];
- // sum2 += d[32] * v[k+1024];
- k = (k + 32) & 0x3ff;
- d = &d[64];
- }
-
-
-
- /* convert to integer, and clip the output */
- is=(S32) (sum*32768);
- // OVERFLOW_CHECKING
- if(is >= 32768)
- *S = 32767;
- else if(is < -32768)
- *S = -32768;
- else
- *S = (short)is;
- S++;
-
-
-
- is=(S32) (sum*32768);
- if(is >= 32768)
- *(S) = 32767;
- else if(is < -32768)
- *(S) = -32768;
- else
- *(S) = (short)is;
-
- S++;
-
- }
-
- }
-
- }
- /*============================================================================*/
- /*============================================================================*/
- /*============================================================================*/
- /*============================================================================*/