diff options
Diffstat (limited to 'mpg123_artsplugin/mpg123/mpg123.h')
-rw-r--r-- | mpg123_artsplugin/mpg123/mpg123.h | 465 |
1 files changed, 465 insertions, 0 deletions
diff --git a/mpg123_artsplugin/mpg123/mpg123.h b/mpg123_artsplugin/mpg123/mpg123.h new file mode 100644 index 00000000..9c61a4ce --- /dev/null +++ b/mpg123_artsplugin/mpg123/mpg123.h @@ -0,0 +1,465 @@ +/* + * mpg123 defines + * used source: musicout.h from mpegaudio package + */ + +#include <stdio.h> +#include <string.h> +#include <signal.h> + +#ifndef WIN32 +#include <sys/signal.h> +#include <unistd.h> +#endif + +#include <math.h> + +typedef unsigned char byte; + +#ifdef OS2 +#include <float.h> +#endif + +#define MPG123_REMOTE +#ifdef HPUX +#define random rand +#define srandom srand +#endif + +#define FRONTEND_NONE 0 +#define FRONTEND_SAJBER 1 +#define FRONTEND_TK3PLAY 2 +#define FRONTEND_GENERIC 3 + +#define SKIP_JUNK 1 + +#ifdef _WIN32 /* Win32 Additions By Tony Million */ +# undef WIN32 +# define WIN32 + +# define M_PI 3.14159265358979323846 +# define M_SQRT2 1.41421356237309504880 +# define REAL_IS_FLOAT +# define NEW_DCT9 + +# define random rand +# define srandom srand + +# define SIGUSR1 0 +# define SIGCONT 0 +# define SIGSTOP 0 + +# undef MPG123_REMOTE /* Get rid of this stuff for Win32 */ +#endif + +#include "xfermem.h" + +#ifdef SUNOS +#define memmove(dst,src,size) bcopy(src,dst,size) +#endif + +#ifdef REAL_IS_FLOAT +# define real float +#elif defined(REAL_IS_LONG_DOUBLE) +# define real long double +#elif defined(REAL_IS_FIXED) +# define real long + +# define REAL_RADIX 15 +# define REAL_FACTOR (32.0 * 1024.0) + +# define REAL_PLUS_32767 ( 32767 << REAL_RADIX ) +# define REAL_MINUS_32768 ( -32768 << REAL_RADIX ) + +# define DOUBLE_TO_REAL(x) ((int)((x) * REAL_FACTOR)) +# define REAL_TO_SHORT(x) ((x) >> REAL_RADIX) +# define REAL_MUL(x, y) (((long long)(x) * (long long)(y)) >> REAL_RADIX) + +#else +# define real double +#endif + +#ifndef DOUBLE_TO_REAL +# define DOUBLE_TO_REAL(x) (x) +#endif +#ifndef REAL_TO_SHORT +# define REAL_TO_SHORT(x) (x) +#endif +#ifndef REAL_PLUS_32767 +# define REAL_PLUS_32767 32767.0 +#endif +#ifndef REAL_MINUS_32768 +# define REAL_MINUS_32768 -32768.0 +#endif +#ifndef REAL_MUL +# define REAL_MUL(x, y) ((x) * (y)) +#endif + +#ifdef __GNUC__ +#define INLINE inline +#else +#define INLINE +#endif + +#include "audio.h" + +/* AUDIOBUFSIZE = n*64 with n=1,2,3 ... */ +#define AUDIOBUFSIZE 16384 + +#define FALSE 0 +#define TRUE 1 + +#define MAX_NAME_SIZE 81 +#define SBLIMIT 32 +#define SCALE_BLOCK 12 +#define SSLIMIT 18 + +#define MPG_MD_STEREO 0 +#define MPG_MD_JOINT_STEREO 1 +#define MPG_MD_DUAL_CHANNEL 2 +#define MPG_MD_MONO 3 + +/* #define MAXFRAMESIZE 1792 */ +#define MAXFRAMESIZE 4096 +#define HDRCMPMASK 0xfffffd00 + +#define MAXOUTBURST 32768 + +/* Pre Shift fo 16 to 8 bit converter table */ +#define AUSHIFT (3) + + +struct al_table +{ + short bits; + short d; +}; + +struct frame { + struct al_table *alloc; + int (*synth)(real *,int,unsigned char *,int *); + int (*synth_mono)(real *,unsigned char *,int *); +#ifdef USE_3DNOW + void (*dct36)(real *,real *,real *,real *,real *); +#endif + int stereo; + int jsbound; + int single; + int II_sblimit; + int down_sample_sblimit; + int lsf; + int mpeg25; + int down_sample; + int header_change; + int lay; + int error_protection; + int bitrate_index; + int sampling_frequency; + int padding; + int extension; + int mode; + int mode_ext; + int copyright; + int original; + int emphasis; + int framesize; /* computed framesize */ + int padsize; /* */ + + int sideInfoSize; /* Layer3 sideInfo Header size */ + + /* FIXME: move this to another place */ + unsigned long firsthead; + unsigned long thishead; + int freeformatsize; +}; + +#define VBR_TOC_SIZE 100 + +#define VBR_FRAMES_FLAG 0x0001 +#define VBR_BYTES_FLAG 0x0002 +#define VBR_TOC_FLAG 0x0004 +#define VBR_SCALE_FLAG 0x0008 + +struct vbrHeader { + unsigned long flags; + unsigned long frames; + unsigned long bytes; + unsigned long scale; + unsigned char toc[100]; +}; + +struct parameter { + int aggressive; /* renice to max. priority */ + int shuffle; /* shuffle/random play */ + int remote; /* remote operation */ + int outmode; /* where to out the decoded sampels */ + int quiet; /* shut up! */ + int xterm_title; /* print filename in xterm title */ + long usebuffer; /* second level buffer size */ + int tryresync; /* resync stream after error */ + int verbose; /* verbose level */ +#ifdef TERM_CONTROL + int term_ctrl; +#endif + int force_mono; + int force_stereo; + int force_8bit; + long force_rate; + double pitch; + int down_sample; + int checkrange; + long doublespeed; + long halfspeed; + int force_reopen; + int stat_3dnow; /* automatic/force/force-off 3DNow! optimized code */ + int test_3dnow; + int realtime; + char filename[256]; + char *esdserver; + char *equalfile; + int enable_equalizer; + long outscale; + long startFrame; + int print_version; +}; + +struct bitstream_info { + int bitindex; + unsigned char *wordpointer; +}; + +struct mpstr { + int bsize; + int framesize; + int fsizeold; + struct frame fr; + /* int (*do_layer)(struct mpstr *,struct frame *fr,int,struct audio_info_struct *); */ + unsigned char bsspace[2][MAXFRAMESIZE+512]; /* MAXFRAMESIZE */ + real hybrid_block[2][2][SBLIMIT*SSLIMIT]; + int hybrid_blc[2]; + unsigned long header; + int bsnum; + real synth_buffs[2][2][0x110]; + int synth_bo; + + struct bitstream_info bsi; +}; + +extern struct bitstream_info bsi; + +struct reader { + int (*init)(struct reader *); + void (*close)(struct reader *); + int (*head_read)(struct reader *,unsigned long *newhead); + int (*head_shift)(struct reader *,unsigned long *head); + int (*skip_bytes)(struct reader *,int len); + int (*read_frame_body)(struct reader *,unsigned char *,int size); + int (*back_bytes)(struct reader *,int bytes); + int (*back_frame)(struct reader *,struct frame *,int num); + long (*tell)(struct reader *); + void (*rewind)(struct reader *); + long filelen; + long filepos; + int filept; + int flags; + unsigned char id3buf[128]; + + unsigned char *backbuf; + int mark; + int bufpos,bufstart,bufend; + int bufsize; +}; +#define READER_FD_OPENED 0x1 +#define READER_ID3TAG 0x2 + +extern struct reader *rd,readers[]; + +extern int halfspeed; +extern int buffer_fd[2]; +extern txfermem *buffermem; +extern char *prgName, *prgVersion; + +#ifndef NOXFERMEM +extern void buffer_loop(struct audio_info_struct *ai,sigset_t *oldsigset); +#endif + +extern void readers_pushback_header(struct reader *rds,unsigned long aLong); +extern void readers_mark_pos(struct reader *rds); +extern void readers_goto_mark(struct reader *rds); + + +/* ------ Declarations from "httpget.c" ------ */ + +extern char *proxyurl; +extern unsigned long proxyip; +extern int http_open (const char *url); +extern char *httpauth; + +/* ------ Declarations from "common.c" ------ */ + +int sync_stream(struct reader *rds,struct frame *fr,int flags,int *skipped); + +extern void audio_flush(int, struct audio_info_struct *); +extern void (*catchsignal(int signum, void(*handler)()))(); + +extern void print_header(struct frame *); +extern void print_header_compact(struct frame *); +extern void print_id3_tag(unsigned char *buf); + +extern int split_dir_file(const char *path, char **dname, char **fname); + +extern unsigned int get1bit(struct bitstream_info *); +extern unsigned int getbits(struct bitstream_info *,int); +extern unsigned int getbits_fast(struct bitstream_info *,int); +extern void backbits(struct bitstream_info *,int); +extern int getbitoffset(struct bitstream_info *); +extern int getbyte(struct bitstream_info *); + +extern void set_pointer(int,long); + +extern unsigned char *pcm_sample; +extern int pcm_point; +extern int audiobufsize; + +extern int OutputDescriptor; + +struct gr_info_s { + int scfsi; + unsigned part2_3_length; + unsigned big_values; + unsigned scalefac_compress; + unsigned block_type; + unsigned mixed_block_flag; + unsigned table_select[3]; + unsigned subblock_gain[3]; + unsigned maxband[3]; + unsigned maxbandl; + unsigned maxb; + unsigned region1start; + unsigned region2start; + unsigned preflag; + unsigned scalefac_scale; + unsigned count1table_select; + real *full_gain[3]; + real *pow2gain; +}; + +struct III_sideinfo +{ + unsigned main_data_begin; + unsigned private_bits; + struct { + struct gr_info_s gr[2]; + } ch[2]; +}; + +extern struct reader *open_stream(const char *,int fd); +extern void read_frame_init (struct frame *fr); +extern int read_frame(struct reader *rd,struct frame *fr); +extern int play_frame(struct mpstr *mp,int init,struct frame *fr); +extern int do_layer3(struct mpstr *mp,struct frame *fr,int,struct audio_info_struct *); +extern int do_layer2(struct mpstr *mp,struct frame *fr,int,struct audio_info_struct *); +extern int do_layer1(struct mpstr *mp,struct frame *fr,int,struct audio_info_struct *); +extern void do_equalizer(real *bandPtr,int channel); + +#ifdef PENTIUM_OPT +extern int synth_1to1_pent (real *,int,unsigned char *); +#endif +extern int synth_1to1 (real *,int,unsigned char *,int *); +extern int synth_1to1_8bit (real *,int,unsigned char *,int *); +extern int synth_1to1_mono (real *,unsigned char *,int *); +extern int synth_1to1_mono2stereo (real *,unsigned char *,int *); +extern int synth_1to1_8bit_mono (real *,unsigned char *,int *); +extern int synth_1to1_8bit_mono2stereo (real *,unsigned char *,int *); + +extern int synth_2to1 (real *,int,unsigned char *,int *); +extern int synth_2to1_8bit (real *,int,unsigned char *,int *); +extern int synth_2to1_mono (real *,unsigned char *,int *); +extern int synth_2to1_mono2stereo (real *,unsigned char *,int *); +extern int synth_2to1_8bit_mono (real *,unsigned char *,int *); +extern int synth_2to1_8bit_mono2stereo (real *,unsigned char *,int *); + +extern int synth_4to1 (real *,int,unsigned char *,int *); +extern int synth_4to1_8bit (real *,int,unsigned char *,int *); +extern int synth_4to1_mono (real *,unsigned char *,int *); +extern int synth_4to1_mono2stereo (real *,unsigned char *,int *); +extern int synth_4to1_8bit_mono (real *,unsigned char *,int *); +extern int synth_4to1_8bit_mono2stereo (real *,unsigned char *,int *); + +extern int synth_ntom (real *,int,unsigned char *,int *); +extern int synth_ntom_8bit (real *,int,unsigned char *,int *); +extern int synth_ntom_mono (real *,unsigned char *,int *); +extern int synth_ntom_mono2stereo (real *,unsigned char *,int *); +extern int synth_ntom_8bit_mono (real *,unsigned char *,int *); +extern int synth_ntom_8bit_mono2stereo (real *,unsigned char *,int *); + +extern void rewindNbits(int bits); +extern int hsstell(void); +extern void huffman_decoder(int ,int *); +extern void huffman_count1(int,int *); +extern void print_stat(struct reader *rd,struct frame *fr,int no,long buffsize,struct audio_info_struct *ai); +extern int get_songlen(struct reader *rd,struct frame *fr,int no); + +extern void init_layer3(int); +extern void init_layer2(void); +extern void make_decode_tables(long scale); +extern void make_conv16to8_table(int); +extern void dct64(real *,real *,real *); + +#ifdef USE_MMX +extern void dct64_MMX(short *a,short *b,real *c); +extern int synth_1to1_MMX(real *, int, short *, short *, int *); +#endif + +extern void synth_ntom_set_step(long,long); + +extern void control_generic(struct mpstr *,struct frame *fr); +extern void control_sajber(struct mpstr *,struct frame *fr); +extern void control_tk3play(struct mpstr *,struct frame *fr); + +extern int cdr_open(struct audio_info_struct *ai, char *ame); +extern int au_open(struct audio_info_struct *ai, char *name); +extern int wav_open(struct audio_info_struct *ai, char *wavfilename); +extern int wav_write(unsigned char *buf,int len); +extern int cdr_close(void); +extern int au_close(void); +extern int wav_close(void); + +extern int au_open(struct audio_info_struct *ai, char *aufilename); +extern int au_close(void); + +extern int cdr_open(struct audio_info_struct *ai, char *cdrfilename); +extern int cdr_close(void); + +extern int getVBRHeader(struct vbrHeader *head,unsigned char *buf, + struct frame *fr); + + +extern unsigned char *conv16to8; +extern long freqs[9]; +extern real muls[27][64]; +extern real decwin[512+32]; +#ifndef USE_MMX +extern real *pnts[5]; +#endif + +extern real equalizer[2][32]; +extern real equalizer_sum[2][32]; +extern int equalizer_cnt; + +extern struct audio_name audio_val2name[]; + +extern struct parameter param; + +/* 486 optimizations */ +#define FIR_BUFFER_SIZE 128 +extern void dct64_486(int *a,int *b,real *c); +extern int synth_1to1_486(real *bandPtr,int channel,unsigned char *out,int nb_blocks); + +/* 3DNow! optimizations */ +#ifdef USE_3DNOW +extern int getcpuflags(void); +extern void dct36(real *,real *,real *,real *,real *); +extern void dct36_3dnow(real *,real *,real *,real *,real *); +extern int synth_1to1_3dnow(real *,int,unsigned char *,int *); +#endif |