diff src/xmms-sid.h @ 1:183e7cbc1036

Initial revision
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 03 Jun 2003 10:23:04 +0000
parents
children 279b1e12df2b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/xmms-sid.h	Tue Jun 03 10:23:04 2003 +0000
@@ -0,0 +1,151 @@
+/*  
+   xmms-sid - SIDPlay input plugin for X MultiMedia System (XMMS)
+
+   Main header file
+
+   Written by Matti "ccr" Hamalainen <mhamalai@ratol.fi>
+   (few bits may still be by Willem Monsuwe)
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+/*
+ #define DEBUG
+*/
+
+#ifndef _XMMS_SID_H
+#define _XMMS_SID_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <glib.h>
+#include <xmms/plugin.h>
+
+extern InputPlugin xmms_sid_ip;
+
+/*
+ *	Configuration structure
+ */
+#define XMMS_SID_CONFIG_IDENT		"XMMS-SID"
+#define XMMS_SID_BUFSIZE		4096
+#define XMMS_SID_NAME			"xmms-sid"
+
+#define XMMS_SID_CHN_MONO		0
+#define XMMS_SID_CHN_STEREO		1
+#define XMMS_SID_CHN_AUTOPAN		2
+
+#define XMMS_SID_CLOCK_PAL		1
+#define XMMS_SID_CLOCK_NTSC		2
+
+#define XMMS_SID_DEFAULT_FILTERFS	400.0
+#define XMMS_SID_DEFAULT_FILTERFM	60.0
+#define XMMS_SID_DEFAULT_FILTERFT	0.05
+
+#define XMMS_SID_MPU_BANK_SWITCHING		1
+#define XMMS_SID_MPU_TRANSPARENT_ROM		2
+#define XMMS_SID_MPU_PLAYSID_ENVIRONMENT	3
+
+extern struct T_sid_cfg {
+	gint bitsPerSample;
+	gint channels;
+	gint frequency;
+	gboolean mos8580;
+	gboolean emulateFilter;
+	gfloat filterFs;
+	gfloat filterFm;
+	gfloat filterFt;
+	gint memoryMode;
+	gint clockSpeed;
+	gboolean forceSpeed;
+	gboolean detectMagic;
+	gboolean usestil;
+	gchar *stilpath;
+	gchar *fileInfo;
+} xs_cfg;
+
+
+/*
+ *	Configuration specific stuff
+ */
+enum {
+	ATYPE_INT = 1,
+	ATYPE_FLOAT,
+	ATYPE_STR,
+	ATYPE_BOOL
+};
+
+
+typedef struct {
+	int	atype;
+	void	*adata;
+	gchar	*aname;
+} T_sid_cfg_entry;
+
+
+/*
+ *	General plugin function prototypes
+ */
+void	xs_init(void);
+int	xs_is_our_file(char *);
+void	xs_play_file(char *);
+void	xs_stop(void);
+void	xs_pause(short);
+void	xs_seek(int);
+int	xs_get_time(void);
+void	xs_get_song_info(char *, char **, int *);
+void	xs_file_info_box(char *);
+void	xs_configure(void);
+void	xs_get_configure(void);
+void	xs_aboutbox(void);
+int	xs_stil_get(gchar *);
+
+int	xs_strcalloc(gchar **, gchar *);
+void	xs_stil_clear(void);
+
+/*
+ *	STIL information specific
+ */
+#define XMMS_SID_STIL_MAXENTRY	64
+
+typedef struct {
+	gchar *title;
+	gchar *name;
+	gchar *artist;
+	gchar *comment;
+} T_sid_stil_subtune;
+
+
+extern struct T_sid_stil_info {
+	T_sid_stil_subtune subtune[XMMS_SID_STIL_MAXENTRY];	
+} xs_stil_info;
+
+
+/*
+ * Debugging and error handling macros
+ */
+#ifdef DEBUG
+#define XSDEBUG(x...) { fprintf(stderr, "XSDEBUG [%s:%d]: ", __FILE__, (int) __LINE__); fprintf(stderr, ## x); }
+#else
+#define XSDEBUG(x...) /* foo */
+#endif
+
+#define XSERR(x...) { fprintf(stderr, XMMS_SID_NAME ": "); fprintf(stderr, ## x); }
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _XMMS_SID_H */