diff src/Input/amidi-plug/amidi-plug.h @ 0:13389e613d67 trunk

[svn] - initial import of audacious-plugins tree (lots to do)
author nenolod
date Mon, 18 Sep 2006 01:11:49 -0700
parents
children 088092a52fea
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Input/amidi-plug/amidi-plug.h	Mon Sep 18 01:11:49 2006 -0700
@@ -0,0 +1,114 @@
+/*
+*
+* Author: Giacomo Lozito <james@develia.org>, (C) 2005-2006
+*
+* 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.,
+* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*
+*/
+
+#ifndef _I_AMIDIPLUG_H
+#define _I_AMIDIPLUG_H 1
+
+#define AMIDIPLUG_STOP	0
+#define AMIDIPLUG_PLAY	1
+#define AMIDIPLUG_PAUSE	2
+#define AMIDIPLUG_ERR	3
+
+#include "i_common.h"
+#include "audacious/plugin.h"
+#include "audacious/output.h"
+#include "libaudacious/beepctrl.h"
+#include "libaudacious/vfs.h"
+#include <pthread.h>
+#include "i_backend.h"
+#include "i_configure.h"
+#include "i_midi.h"
+#include "i_fileinfo.h"
+#include "i_utils.h"
+
+
+/* if this is defined, possible midi files are
+   checked by looking at their first (magic) bytes
+   instead of just reading the file extension */
+#define MIDIFILE_PROBE_MAGICBYTES 1
+
+
+static pthread_t amidiplug_play_thread;
+static pthread_t amidiplug_audio_thread;
+static pthread_mutex_t amidiplug_gettime_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t amidiplug_playing_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t amidiplug_playing_cond = PTHREAD_COND_INITIALIZER;
+
+gint amidiplug_playing_status = AMIDIPLUG_STOP;
+
+midifile_t midifile;
+
+amidiplug_sequencer_backend_t backend;
+
+amidiplug_cfg_ap_t amidiplug_cfg_ap =
+{
+  NULL,		/* ap_seq_backend */
+  0		/* ap_opts_length_precalc */
+};
+
+
+void * amidiplug_play_loop( void * );
+void * amidiplug_audio_loop( void * );
+void amidiplug_skipto( gint );
+static void amidiplug_init( void );
+static void amidiplug_cleanup( void );
+static void amidiplug_aboutbox( void );
+static void amidiplug_configure( void );
+static gint amidiplug_is_our_file( gchar * );
+static void amidiplug_play( gchar * );
+static void amidiplug_stop( void );
+static void amidiplug_pause( gshort );
+static void amidiplug_seek( gint );
+static gint amidiplug_get_time( void );
+static void amidiplug_get_volume( gint * , gint * );
+static void amidiplug_set_volume( gint , gint );
+static void amidiplug_get_song_info( gchar * , gchar ** , gint * );
+static void amidiplug_file_info_box( gchar * );
+
+InputPlugin amidiplug_ip =
+{
+  NULL,				/* handle */
+  NULL,				/* filename */
+  NULL,				/* description */
+  amidiplug_init,		/* init */
+  amidiplug_aboutbox,		/* aboutbox */
+  amidiplug_configure,		/* configure */
+  amidiplug_is_our_file,	/* is_our_file */
+  NULL,				/* scan_dir */
+  amidiplug_play,		/* play_file */
+  amidiplug_stop,		/* stop */
+  amidiplug_pause,		/* pause */
+  amidiplug_seek,		/* seek */
+  NULL,				/* set_eq */
+  amidiplug_get_time,		/* get_time */
+  amidiplug_get_volume,		/* get_volume */
+  amidiplug_set_volume,		/* set_volume */
+  amidiplug_cleanup,		/* cleanup */
+  NULL,				/* get_vis_type */
+  NULL,				/* add_vis_pcm */
+  NULL,				/* set_info */
+  NULL,				/* set_info_text */
+  amidiplug_get_song_info,	/* get_song_info */
+  amidiplug_file_info_box,	/* file_info_box */
+  NULL,				/* output */
+  NULL				/* get_song_tuple */
+};
+
+#endif /* !_I_AMIDIPLUG_H */