diff src/sun/sun.h @ 12:3da1b8942b8b trunk

[svn] - remove src/Input src/Output src/Effect src/General src/Visualization src/Container
author nenolod
date Mon, 18 Sep 2006 03:14:20 -0700
parents src/Output/sun/sun.h@088092a52fea
children 2ebeb7816c5e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sun/sun.h	Mon Sep 18 03:14:20 2006 -0700
@@ -0,0 +1,159 @@
+/*
+ *  Copyright (C) 2001  CubeSoft Communications, Inc.
+ *  <http://www.csoft.org>
+ *
+ *  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.
+ */
+
+#include "config.h"
+
+#include <gtk/gtk.h>
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <pthread.h>
+
+#include "audioio.h"
+
+#include "audacious/plugin.h"
+#include "audacious/configdb.h"
+
+/* Default path to audio device. */
+#ifndef SUN_DEV_AUDIO
+#define SUN_DEV_AUDIO "/dev/audio"
+#endif
+
+/* Default path to audioctl device */
+#ifndef SUN_DEV_AUDIOCTL
+#define SUN_DEV_AUDIOCTL "/dev/audioctl"
+#endif
+
+/* Default path to mixer device */
+#ifndef SUN_DEV_MIXER
+#define SUN_DEV_MIXER "/dev/mixer"
+#endif
+
+/* Default mixer device to control */
+#ifndef SUN_DEFAULT_VOLUME_DEV
+#define SUN_DEFAULT_VOLUME_DEV "dac"
+#endif
+
+/* Default hardware block size */
+#ifndef SUN_DEFAULT_BLOCKSIZE
+#define SUN_DEFAULT_BLOCKSIZE 8800
+#endif
+
+/* Default `requested' buffer size */
+#ifndef SUN_DEFAULT_BUFFER_SIZE
+#define SUN_DEFAULT_BUFFER_SIZE 8800
+#endif
+
+/* Minimum total buffer size */
+#ifndef SUN_MIN_BUFFER_SIZE
+#define SUN_MIN_BUFFER_SIZE 14336
+#endif
+
+/* Default prebuffering (%) */
+#ifndef SUN_DEFAULT_PREBUFFER_SIZE
+#define SUN_DEFAULT_PREBUFFER_SIZE 25
+#endif
+
+#define SUN_VERSION "0.6"
+
+struct sun_format {
+	char	name[16];
+	union {
+		AFormat	xmms;
+		gint	sun;
+	} format;
+	int	frequency;
+	int	channels;
+	int	bps;
+};
+
+struct sun_audio {
+	struct	sun_format *input;
+	struct	sun_format *output;
+	struct	sun_format *effect;
+
+	gchar	*devaudio;
+	gchar	*devaudioctl;
+	gchar	*devmixer;
+	gchar	*mixer_voldev;
+
+	gint	fd;
+	gint	mixerfd;
+
+	gboolean mixer_keepopen;
+
+	gboolean going;
+	gboolean paused;
+	gboolean unpause, do_pause;
+
+	gint	req_prebuffer_size;
+	gint	req_buffer_size;
+
+	pthread_mutex_t	mixer_mutex;
+};
+
+struct sun_statsframe {
+	int	fd;
+	int	active;
+
+	GtkWidget	*mode_label;
+	GtkWidget	*blocksize_label;
+	GtkWidget	*ooffs_label;
+	pthread_mutex_t	audioctl_mutex;
+	pthread_mutex_t	active_mutex;
+};
+
+extern	OutputPlugin	op;
+
+extern struct sun_audio		audio;
+extern struct sun_statsframe	stats_frame;
+
+void	 sun_init(void);
+void	 sun_about(void);
+void	 sun_configure(void);
+void	 sun_cleanup(void);
+
+gint	 sun_open(AFormat, int, int);
+void	 sun_write(void *, int);
+void	 sun_close(void);
+void	 sun_flush(int);
+void	 sun_pause(short);
+gint	 sun_free(void);
+gint	 sun_playing(void);
+gint	 sun_output_time(void);
+gint	 sun_written_time(void);
+void	 sun_get_volume(int *, int *);
+void	 sun_set_volume(int, int);
+void	*sun_get_convert_buffer(size_t);
+int	(*sun_get_convert_func(int, int))(void **, int);
+
+#ifdef WORDS_BIGENDIAN
+#define IS_BIG_ENDIAN TRUE
+#else
+#define IS_BIG_ENDIAN FALSE
+#endif
+