10260
|
1 #ifndef DECODE144_H
|
|
2 #define DECODE144_H
|
|
3
|
|
4 /* internal globals */
|
|
5 typedef struct {
|
|
6 unsigned int resetflag, val, oldval;
|
|
7 unsigned int unpacked[28]; /* buffer for unpacked input */
|
|
8 unsigned int *iptr; /* pointer to current input (from unpacked) */
|
|
9 unsigned int gval;
|
|
10 unsigned short *gsp;
|
|
11 unsigned int gbuf1[8];
|
|
12 unsigned short gbuf2[120];
|
|
13 signed short output_buffer[40];
|
|
14 unsigned int *decptr; /* decoder ptr */
|
|
15 signed short *decsp;
|
|
16
|
|
17 /* the swapped buffers */
|
|
18 unsigned int swapb1a[10];
|
|
19 unsigned int swapb2a[10];
|
|
20 unsigned int swapb1b[10];
|
|
21 unsigned int swapb2b[10];
|
|
22 unsigned int *swapbuf1;
|
|
23 unsigned int *swapbuf2;
|
|
24 unsigned int *swapbuf1alt;
|
|
25 unsigned int *swapbuf2alt;
|
|
26
|
|
27 unsigned int buffer[5];
|
|
28 unsigned short int buffer_2[148];
|
|
29 unsigned short int buffer_a[40];
|
|
30 unsigned short int buffer_b[40];
|
|
31 unsigned short int buffer_c[40];
|
|
32 unsigned short int buffer_d[40];
|
|
33
|
|
34 unsigned short int work[50];
|
|
35 unsigned short *sptr;
|
|
36
|
|
37 int buffer1[10];
|
|
38 int buffer2[10];
|
|
39
|
|
40 signed short wavtable1[2304];
|
|
41 unsigned short wavtable2[2304];
|
|
42 } Real_internal;
|
|
43
|
|
44 /* consts */
|
|
45 #define NBLOCKS 4 /* number of segments within a block */
|
|
46 #define BLOCKSIZE 40 /* (quarter) block size in 16-bit words (80 bytes) */
|
|
47 #define HALFBLOCK 20 /* BLOCKSIZE/2 */
|
|
48 #define BUFFERSIZE 146 /* for do_output */
|
|
49
|
|
50 /* prototypes */
|
|
51 static int t_sqrt (unsigned int x);
|
|
52 static void do_voice (int *a1, int *a2);
|
|
53 static void do_output_subblock (Real_internal *glob, int x);
|
|
54 static void rotate_block (short *source, short *target, int offset);
|
|
55 static int irms (short *data, int factor);
|
|
56 static void add_wav (Real_internal *glob, int n, int f, int m1, int m2, int m3, short *s1, short *s2, short *s3, short *dest);
|
|
57 static void final (Real_internal *glob, short *i1, short *i2, void *out, int *statbuf, int len);
|
|
58 static void unpack_input (unsigned char *input, unsigned int *output);
|
|
59 static unsigned int rms (int *data, int f);
|
|
60 static void dec1 (Real_internal *glob, int *data, int *inp, int n, int f);
|
|
61 static void dec2 (Real_internal *glob, int *data, int *inp, int n, int f, int *inp2, int l);
|
|
62 static int eq (Real_internal *glob, short *in, int *target);
|
|
63
|
|
64 #endif /* !DECODE144_H */
|