A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 226 lines 6.9 kB view raw
1/* Copyright (c) 1997-1999 Miller Puckette. 2* For information on usage and redistribution, and for a DISCLAIMER OF ALL 3* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ 4 5/* Audio and MIDI I/O, and other scheduling and system stuff. */ 6 7/* NOTE: this file describes Pd implementation details which may change 8in future releases. The public (stable) API is in m_pd.h. */ 9 10/* in s_file.c */ 11typedef struct _namelist 12{ 13 struct _namelist *nl_next; 14 char *nl_string; 15} t_namelist; 16 17t_namelist *namelist_append(t_namelist *listwas, const char *s); 18void namelist_free(t_namelist *listwas); 19 20/* s_main.c */ 21extern int sys_debuglevel; 22extern int sys_verbose; 23extern int sys_noloadbang; 24extern int sys_nogui; 25extern char *sys_guicmd; 26 27EXTERN int sys_nearestfontsize(int fontsize); 28EXTERN int sys_hostfontsize(int fontsize); 29 30extern int sys_defaultfont; 31extern t_symbol *sys_libdir; /* library directory for auxilliary files */ 32 33/* s_loader.c */ 34int sys_load_lib(char *dirname, char *filename); 35 36/* s_audio.c */ 37 38#define SENDDACS_NO 0 /* return values for sys_send_dacs() */ 39#define SENDDACS_YES 1 40#define SENDDACS_SLEPT 2 41 42#define DEFDACBLKSIZE 64 43extern int sys_schedblocksize; /* audio block size for scheduler */ 44extern int sys_hipriority; /* real-time flag, true if priority boosted */ 45extern t_sample *sys_soundout; 46extern t_sample *sys_soundin; 47extern int sys_inchannels; 48extern int sys_outchannels; 49extern int sys_advance_samples; /* scheduler advance in samples */ 50extern int sys_blocksize; /* audio I/O block size in sample frames */ 51extern float sys_dacsr; 52extern int sys_schedadvance; 53extern int sys_sleepgrain; 54void sys_open_audio(int naudioindev, int *audioindev, 55 int nchindev, int *chindev, 56 int naudiooutdev, int *audiooutdev, int nchoutdev, int *choutdev, 57 int srate, int advance, int enable); 58void sys_close_audio(void); 59 60 /* s_midi.c */ 61void sys_open_midi(int nmidiin, int *midiinvec, int nmidiout, int *midioutvec); 62 63 /* implemented in the system dependent MIDI code (s_midi_pm.c, etc. ) */ 64void sys_do_open_midi(int nmidiin, int *midiinvec, 65 int nmidiout, int *midioutvec); 66void sys_close_midi(void); 67void midi_getdevs(char *indevlist, int *nindevs, 68 char *outdevlist, int *noutdevs, int maxndev, int devdescsize); 69 70int sys_send_dacs(void); 71void sys_reportidle(void); 72void sys_set_priority(int higher); 73void sys_audiobuf(int nbufs); 74void sys_getmeters(float *inmax, float *outmax); 75void sys_listdevs(void); 76void sys_setblocksize(int n); 77 78/* s_midi.c */ 79#define MAXMIDIINDEV 16 /* max. number of input ports */ 80#define MAXMIDIOUTDEV 16 /* max. number of output ports */ 81extern int sys_nmidiin; 82extern int sys_nmidiout; 83extern int sys_midiindevlist[]; 84extern int sys_midioutdevlist[]; 85 86EXTERN void sys_putmidimess(int portno, int a, int b, int c); 87EXTERN void sys_putmidibyte(int portno, int a); 88EXTERN void sys_poll_midi(void); 89EXTERN void sys_setmiditimediff(double inbuftime, double outbuftime); 90EXTERN void sys_midibytein(int portno, int byte); 91 92/* m_sched.c */ 93EXTERN void sys_log_error(int type); 94#define ERR_NOTHING 0 95#define ERR_ADCSLEPT 1 96#define ERR_DACSLEPT 2 97#define ERR_RESYNC 3 98#define ERR_DATALATE 4 99void sched_set_using_dacs(int flag); 100 101/* s_inter.c */ 102 103EXTERN void sys_microsleep(int microsec); 104 105EXTERN void sys_bail(int exitcode); 106EXTERN int sys_pollgui(void); 107 108EXTERN_STRUCT _socketreceiver; 109#define t_socketreceiver struct _socketreceiver 110 111typedef void (*t_socketnotifier)(void *x); 112typedef void (*t_socketreceivefn)(void *x, t_binbuf *b); 113 114EXTERN t_socketreceiver *socketreceiver_new(void *owner, 115 t_socketnotifier notifier, t_socketreceivefn socketreceivefn, int udp); 116EXTERN void socketreceiver_read(t_socketreceiver *x, int fd); 117EXTERN void sys_sockerror(char *s); 118EXTERN void sys_closesocket(int fd); 119 120typedef void (*t_fdpollfn)(void *ptr, int fd); 121EXTERN void sys_addpollfn(int fd, t_fdpollfn fn, void *ptr); 122EXTERN void sys_rmpollfn(int fd); 123#ifdef UNIX 124void sys_setalarm(int microsec); 125void sys_setvirtualalarm( void); 126#endif 127 128#define API_ALSA 1 129#define API_OSS 2 130#define API_MMIO 3 131#define API_PORTAUDIO 4 132#define API_JACK 5 133#define API_ROCKBOX 6 134 135#if defined(__linux__) && !defined(ROCKBOX) 136#define API_DEFAULT API_OSS 137#define API_DEFSTRING "OSS" 138#endif 139#ifdef MSW 140#define API_DEFAULT API_MMIO 141#define API_DEFSTRING "MMIO" 142#endif 143#ifdef MACOSX 144#define API_DEFAULT API_PORTAUDIO 145#define API_DEFSTRING "portaudio" 146#endif 147#ifdef ROCKBOX 148#define API_DEFAULT API_ROCKBOX 149#define API_DEFSTRING "Rockbox" 150#endif 151#define DEFAULTAUDIODEV 0 152 153#define MAXAUDIOINDEV 4 154#define MAXAUDIOOUTDEV 4 155 156#define DEFMIDIDEV 0 157 158#define DEFAULTSRATE 44100 159#ifdef MSW 160#define DEFAULTADVANCE 70 161#else 162#define DEFAULTADVANCE 50 163#endif 164 165int pa_open_audio(int inchans, int outchans, int rate, t_sample *soundin, 166 t_sample *soundout, int framesperbuf, int nbuffers, 167 int indeviceno, int outdeviceno); 168void pa_close_audio(void); 169int pa_send_dacs(void); 170void sys_reportidle(void); 171void pa_listdevs(void); 172void pa_getdevs(char *indevlist, int *nindevs, 173 char *outdevlist, int *noutdevs, int *canmulti, 174 int maxndev, int devdescsize); 175 176int oss_open_audio(int naudioindev, int *audioindev, int nchindev, 177 int *chindev, int naudiooutdev, int *audiooutdev, int nchoutdev, 178 int *choutdev, int rate); /* IOhannes */ 179void oss_close_audio(void); 180int oss_send_dacs(void); 181void oss_reportidle(void); 182void oss_getdevs(char *indevlist, int *nindevs, 183 char *outdevlist, int *noutdevs, int *canmulti, 184 int maxndev, int devdescsize); 185 186int alsa_open_audio(int naudioindev, int *audioindev, int nchindev, 187 int *chindev, int naudiooutdev, int *audiooutdev, int nchoutdev, 188 int *choutdev, int rate); 189void alsa_close_audio(void); 190int alsa_send_dacs(void); 191void alsa_reportidle(void); 192void alsa_getdevs(char *indevlist, int *nindevs, 193 char *outdevlist, int *noutdevs, int *canmulti, 194 int maxndev, int devdescsize); 195 196int jack_open_audio(int wantinchans, int wantoutchans, int srate); 197void jack_close_audio(void); 198int jack_send_dacs(void); 199void jack_reportidle(void); 200void jack_listdevs(void); 201 202void mmio_open_audio(int naudioindev, int *audioindev, 203 int nchindev, int *chindev, int naudiooutdev, int *audiooutdev, 204 int nchoutdev, int *choutdev, int rate); 205void mmio_close_audio( void); 206void mmio_reportidle(void); 207int mmio_send_dacs(void); 208void mmio_getdevs(char *indevlist, int *nindevs, 209 char *outdevlist, int *noutdevs, int *canmulti, 210 int maxndev, int devdescsize); 211 212void rockbox_open_audio(int rate); 213void rockbox_close_audio(void); 214int rockbox_send_dacs(void); 215void rockbox_getdevs(void); 216 217void sys_listmididevs(void); 218void sys_set_audio_api(int whichapi); 219void sys_get_audio_apis(char *buf); 220extern int sys_audioapi; 221void sys_set_audio_state(int onoff); 222 223/* API dependent audio flags and settings */ 224void oss_set32bit( void); 225void linux_alsa_devname(char *devname); 226