summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/native/decode144.h
diff options
context:
space:
mode:
Diffstat (limited to 'libmpcodecs/native/decode144.h')
-rw-r--r--libmpcodecs/native/decode144.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/libmpcodecs/native/decode144.h b/libmpcodecs/native/decode144.h
new file mode 100644
index 0000000000..597c806b63
--- /dev/null
+++ b/libmpcodecs/native/decode144.h
@@ -0,0 +1,64 @@
+#ifndef DECODE144_H
+#define DECODE144_H
+
+/* internal globals */
+typedef struct {
+ unsigned int resetflag, val, oldval;
+ unsigned int unpacked[28]; /* buffer for unpacked input */
+ unsigned int *iptr; /* pointer to current input (from unpacked) */
+ unsigned int gval;
+ unsigned short *gsp;
+ unsigned int gbuf1[8];
+ unsigned short gbuf2[120];
+ signed short output_buffer[40];
+ unsigned int *decptr; /* decoder ptr */
+ signed short *decsp;
+
+ /* the swapped buffers */
+ unsigned int swapb1a[10];
+ unsigned int swapb2a[10];
+ unsigned int swapb1b[10];
+ unsigned int swapb2b[10];
+ unsigned int *swapbuf1;
+ unsigned int *swapbuf2;
+ unsigned int *swapbuf1alt;
+ unsigned int *swapbuf2alt;
+
+ unsigned int buffer[5];
+ unsigned short int buffer_2[148];
+ unsigned short int buffer_a[40];
+ unsigned short int buffer_b[40];
+ unsigned short int buffer_c[40];
+ unsigned short int buffer_d[40];
+
+ unsigned short int work[50];
+ unsigned short *sptr;
+
+ int buffer1[10];
+ int buffer2[10];
+
+ signed short wavtable1[2304];
+ unsigned short wavtable2[2304];
+} Real_internal;
+
+/* consts */
+#define NBLOCKS 4 /* number of segments within a block */
+#define BLOCKSIZE 40 /* (quarter) block size in 16-bit words (80 bytes) */
+#define HALFBLOCK 20 /* BLOCKSIZE/2 */
+#define BUFFERSIZE 146 /* for do_output */
+
+/* prototypes */
+static int t_sqrt (unsigned int x);
+static void do_voice (int *a1, int *a2);
+static void do_output_subblock (Real_internal *glob, int x);
+static void rotate_block (short *source, short *target, int offset);
+static int irms (short *data, int factor);
+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);
+static void final (Real_internal *glob, short *i1, short *i2, void *out, int *statbuf, int len);
+static void unpack_input (unsigned char *input, unsigned int *output);
+static unsigned int rms (int *data, int f);
+static void dec1 (Real_internal *glob, int *data, int *inp, int n, int f);
+static void dec2 (Real_internal *glob, int *data, int *inp, int n, int f, int *inp2, int l);
+static int eq (Real_internal *glob, short *in, int *target);
+
+#endif /* !DECODE144_H */