Blame src/mpg123app.h

Packit c32a2d
/*
Packit c32a2d
	mpg123: main code of the program (not of the decoder...)
Packit c32a2d
Packit c32a2d
	copyright 1995-2015 by the mpg123 project - free software under the terms of the LGPL 2.1
Packit c32a2d
	see COPYING and AUTHORS files in distribution or http://mpg123.org
Packit c32a2d
	initially written by Michael Hipp
Packit c32a2d
Packit c32a2d
	mpg123 defines 
Packit c32a2d
	used source: musicout.h from mpegaudio package
Packit c32a2d
*/
Packit c32a2d
Packit c32a2d
#ifndef MPG123_H
Packit c32a2d
#define MPG123_H
Packit c32a2d
#include "config.h"
Packit c32a2d
Packit c32a2d
/* everyone needs it */
Packit c32a2d
#include "compat.h"
Packit c32a2d
/* import DLL symbols on windows */
Packit c32a2d
Packit c32a2d
#include "httpget.h"
Packit c32a2d
#if WIN32
Packit c32a2d
#include "win32_support.h"
Packit c32a2d
#endif
Packit c32a2d
Packit c32a2d
#if defined(WIN32) && defined(DYNAMIC_BUILD)
Packit c32a2d
#define LINK_MPG123_DLL
Packit c32a2d
#endif
Packit c32a2d
#include "mpg123.h"
Packit c32a2d
#define MPG123_REMOTE
Packit c32a2d
#define REMOTE_BUFFER_SIZE 2048
Packit c32a2d
#define MAXOUTBURST 32768
Packit c32a2d
Packit c32a2d
#ifdef __GNUC__
Packit c32a2d
#define INLINE inline
Packit c32a2d
#else
Packit c32a2d
#define INLINE
Packit c32a2d
#endif
Packit c32a2d
Packit c32a2d
#include "local.h"
Packit c32a2d
Packit c32a2d
#define VERBOSE_MAX 3
Packit c32a2d
Packit c32a2d
extern char* binpath; /* argv[0], actually... */
Packit c32a2d
Packit c32a2d
struct parameter
Packit c32a2d
{
Packit c32a2d
	int aggressive; /* renice to max. priority */
Packit c32a2d
	int shuffle;	/* shuffle/random play */
Packit c32a2d
	int remote;	/* remote operation */
Packit c32a2d
	int remote_err;	/* remote operation to stderr */
Packit c32a2d
	int quiet;	/* shut up! */
Packit c32a2d
	int xterm_title;	/* Change xterm title to song names? */
Packit c32a2d
	long usebuffer;	/* second level buffer size */
Packit c32a2d
	int verbose;    /* verbose level */
Packit c32a2d
	const char* output_module;	/* audio output module to use */
Packit c32a2d
	const char* output_device;	/* audio output device to use */
Packit c32a2d
	long  output_flags;	/* out123 flags */
Packit c32a2d
#ifdef HAVE_TERMIOS
Packit c32a2d
	int term_ctrl;
Packit c32a2d
	int term_visual;
Packit c32a2d
	/* Those are supposed to be single characters. */
Packit c32a2d
	char* term_usr1;
Packit c32a2d
	char* term_usr2;
Packit c32a2d
#endif
Packit c32a2d
	int checkrange;
Packit c32a2d
	int force_reopen;
Packit c32a2d
	int test_cpu;
Packit c32a2d
	long realtime;
Packit c32a2d
#ifdef HAVE_WINDOWS_H
Packit c32a2d
	int w32_priority;
Packit c32a2d
#endif
Packit c32a2d
	long listentry; /* possibility to choose playback of one entry in playlist (0: off, > 0 : select, < 0; just show list*/
Packit c32a2d
	char* listname; /* name of playlist */
Packit c32a2d
	int long_id3;
Packit c32a2d
	int list_cpu;
Packit c32a2d
	char *cpu;
Packit c32a2d
#ifdef FIFO
Packit c32a2d
	char* fifo;
Packit c32a2d
#endif
Packit c32a2d
	long timeout; /* timeout for reading in seconds */
Packit c32a2d
	long loop;    /* looping of tracks */
Packit c32a2d
	int delay;
Packit c32a2d
	int index;    /* index / scan through files before playback */
Packit c32a2d
	/* parameters for mpg123 handle */
Packit c32a2d
	int down_sample;
Packit c32a2d
	long rva; /* (which) rva to do: 0: nothing, 1: radio/mix/track 2: album/audiophile */
Packit c32a2d
	long halfspeed;
Packit c32a2d
	long doublespeed;
Packit c32a2d
	long start_frame;  /* frame offset to begin with */
Packit c32a2d
	long frame_number; /* number of frames to decode */
Packit c32a2d
	long outscale;
Packit c32a2d
	int flags;
Packit c32a2d
	long force_rate;
Packit c32a2d
	int talk_icy;
Packit c32a2d
	long resync_limit;
Packit c32a2d
	int smooth;
Packit c32a2d
	double pitch; /* <0 or >0, 0.05 for 5% speedup. */
Packit c32a2d
	unsigned long appflags; /* various switches for mpg123 application */
Packit c32a2d
	char *proxyurl;
Packit c32a2d
	int keep_open; /* Whether to keep files open after end reached, for remote control mode, perhaps terminal control, too. */
Packit c32a2d
	int force_utf8; /* Regardless of environment, always print out verbatim UTF for metadata. */
Packit c32a2d
	long index_size; /* size of frame index */
Packit c32a2d
	char *force_encoding;
Packit c32a2d
	double preload; /* buffer preload size (fraction of full buffer) */
Packit c32a2d
	long preframes;
Packit c32a2d
	long gain; /* audio output gain, for selected outputs */
Packit c32a2d
	char* streamdump;
Packit c32a2d
	long icy_interval;
Packit c32a2d
	const char* name; /* name for this player instance */
Packit c32a2d
	double device_buffer; /* output device buffer */
Packit c32a2d
};
Packit c32a2d
Packit c32a2d
enum mpg123app_flags
Packit c32a2d
{
Packit c32a2d
	 MPG123APP_IGNORE_MIME = 0x01
Packit c32a2d
	,MPG123APP_LYRICS = 0x02
Packit c32a2d
	,MPG123APP_CONTINUE = 0x04
Packit c32a2d
};
Packit c32a2d
Packit c32a2d
/* shortcut to check application flags */
Packit c32a2d
#define APPFLAG(a) (param.appflags & (a))
Packit c32a2d
Packit c32a2d
extern char *equalfile;
Packit c32a2d
extern off_t framenum;
Packit c32a2d
extern struct httpdata htd;
Packit c32a2d
Packit c32a2d
extern int OutputDescriptor;
Packit c32a2d
Packit c32a2d
extern int intflag;
Packit c32a2d
Packit c32a2d
#ifdef VARMODESUPPORT
Packit c32a2d
extern int varmode;
Packit c32a2d
extern int playlimit;
Packit c32a2d
#endif
Packit c32a2d
Packit c32a2d
/* why extern? */
Packit c32a2d
extern int play_frame(void);
Packit c32a2d
Packit c32a2d
extern int control_generic(mpg123_handle *fr);
Packit c32a2d
Packit c32a2d
extern struct parameter param;
Packit c32a2d
Packit c32a2d
/* avoid the SIGINT in terminal control */
Packit c32a2d
void next_track(void);
Packit c32a2d
void prev_track(void);
Packit c32a2d
void next_dir(void);
Packit c32a2d
void prev_dir(void);
Packit c32a2d
int  open_track(char *fname);
Packit c32a2d
void close_track(void);
Packit c32a2d
void set_intflag(void);
Packit c32a2d
Packit c32a2d
/* equalizer... success is 0, failure -1 */
Packit c32a2d
int load_equalizer(mpg123_handle *mh);
Packit c32a2d
Packit c32a2d
void continue_msg(const char *name);
Packit c32a2d
Packit c32a2d
#endif