|
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
|