Mercurial > audlegacy
diff Input/cdaudio/cdaudio.h @ 0:cb178e5ad177 trunk
[svn] Import audacious source.
author | nenolod |
---|---|
date | Mon, 24 Oct 2005 03:06:47 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Input/cdaudio/cdaudio.h Mon Oct 24 03:06:47 2005 -0700 @@ -0,0 +1,158 @@ +/* XMMS - Cross-platform multimedia player + * Copyright (C) 1998-2002 Peter Alm, Mikael Alm, Olle Hallnas, + * Thomas Nilsson and 4Front Technologies + * Copyright (C) 1999-2002 Haavard Kvaalen + * + * 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. + */ +#ifndef CDAUDIO_H +#define CDAUDIO_H + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <glib.h> +#include <gtk/gtk.h> +#include "audacious/plugin.h" + +#include "cdinfo.h" + +#ifdef HAVE_OSS +#include <Output/OSS/soundcard.h> +#endif + +#ifdef HAVE_MNTENT_H +#include <mntent.h> +#endif + +#ifdef HAVE_GETMNTINFO +#include <sys/param.h> +#include <sys/ucred.h> +#include <sys/mount.h> +#endif + +#ifndef CD_FRAMES +#define CD_FRAMES 75 +#endif + +#include <sys/types.h> + +#ifdef HAVE_LINUX_CDROM_H +#include <linux/cdrom.h> +#elif defined HAVE_SYS_CDIO_H +#include <sys/cdio.h> +#endif + +#if defined(CDROMREADAUDIO) || defined(CDIOCREADAUDIO) || defined(CDROMCDDA) +# define CDDA_HAS_READAUDIO +#endif + +#ifndef CD_FRAMESIZE_RAW +# define CD_FRAMESIZE_RAW 2352 +#endif + +/* Number of frames that are read at once in dae mode */ +#define CDDA_DAE_FRAMES 8 + +#ifndef CDDA_HAS_READAUDIO +#warning "Digital audio extraction has not been ported to this platform" +#define read_audio_data(fd, pos, num, buf) -1 +#else +int read_audio_data(int fd, int pos, int num, void *buf); +#endif + + +#ifdef __FreeBSD__ +/* + * FreeBSD won't be able to detect media changes if using O_NONBLOCK + */ +#define CDOPENFLAGS O_RDONLY +#else +#define CDOPENFLAGS (O_RDONLY | O_NONBLOCK) +#endif + + +#define CDDB_DEFAULT_SERVER "freedb.freedb.org" + +struct driveinfo { + gchar *device, *directory; + gint mixer, oss_mixer; + gboolean valid; + gint dae; +}; + +typedef struct { + GList *drives; + + gchar *cddb_server; + gint cddb_protocol_level; + gboolean use_cddb; + + gchar *cdin_server; + gboolean use_cdin; + + gboolean title_override; + char *name_format; +} CDDAConfig; + +struct cdda_msf { + guint8 minute; + guint8 second; + guint8 frame; + struct { + guint data_track:1; + } flags; +}; + +/* + * Note: This macro will convert to a LBA representation of the MSF + * address, not to a true LBA address, as we don't subtract the offset + */ +#define LBA(msf) ((msf.minute * 60 + msf.second) * 75 + msf.frame) + +#define CDDA_MSF_OFFSET 150 + +typedef struct { + guint8 first_track, last_track; + struct cdda_msf leadout; + struct cdda_msf track[100]; +} cdda_disc_toc_t; + +extern CDDAConfig cdda_cfg; + +enum { + CDDA_MIXER_NONE, + CDDA_MIXER_DRIVE, + CDDA_MIXER_OSS, +}; + +enum { + CDDA_READ_ANALOG, + CDDA_READ_DAE, +}; + +void cdda_configure(void); +gboolean cdda_get_toc(cdda_disc_toc_t * info, const gchar *device); +guint32 cdda_cddb_compute_discid(cdda_disc_toc_t * info); +void cdda_cddb_get_info(cdda_disc_toc_t * toc, cdinfo_t * info); +void cdda_cdindex_get_idx(cdda_disc_toc_t * toc, cdinfo_t * cdinfo); +struct driveinfo *cdda_find_drive(gchar *filename); + +void cdda_cddb_show_server_dialog(GtkWidget * w, gpointer data); +void cdda_cddb_set_server(const gchar *new_server); +void cddb_quit(void); + +#endif