Mercurial > mplayer.hg
diff libmpcodecs/native/decode144.h @ 10260:597ad4eb02fc
RealAudio 1.0 (14_4) and 2.0 (28_8) native decoders.
Author unknown, code from a public domain player for Amiga
at http://www.honeypot.net/audio
author | rtognimp |
---|---|
date | Sun, 08 Jun 2003 20:25:28 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libmpcodecs/native/decode144.h Sun Jun 08 20:25:28 2003 +0000 @@ -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 */