pure-data/src/s_audio_oss.c

/* Copyright (c) 1997-2003 Guenter Geiger, Miller Puckette, Larry Troxler,
* Winfried Ritsch, Karl MacMillan, and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */

/* this file inputs and outputs audio using the OSS API available on linux. */

#ifdef HAVE_SOUNDCARD_H
# include <soundcard.h>
#else
# include <sys/soundcard.h>
#endif

#ifndef SNDCTL_DSP_GETISPACE
#define SNDCTL_DSP_GETISPACE
#endif
#ifndef SNDCTL_DSP_GETOSPACE
#define SNDCTL_DSP_GETOSPACE
#endif

#include "m_pd.h"
#include "s_stuff.h"
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>


/* Defines */
#define DEBUG(x)
#define DEBUG2(x)

#define OSS_MAXCHPERDEV
#define OSS_MAXDEV
#define OSS_DEFFRAGSIZE
#define OSS_DEFAUDIOBUF
#define OSS_DEFAULTCH
#define RME_DEFAULTCH
t_oss_int16;
t_oss_int32;
#define OSS_MAXSAMPLEWIDTH
#define OSS_BYTESPERCHAN(width)
#define OSS_XFERSAMPS(chans)
#define OSS_XFERSIZE(chans, width)

/* GLOBALS */
static int linux_meters;        /* true if we're metering */
static t_sample linux_inmax;       /* max input amplitude */
static t_sample linux_outmax;      /* max output amplitude */
static int linux_fragsize =;  /* for block mode; block size (sample frames) */
extern int audio_blocksize;     /* stolen from s_audio.c */
/* our device handles */

t_oss_dev;

static t_oss_dev linux_dacs[OSS_MAXDEV];
static t_oss_dev linux_adcs[OSS_MAXDEV];
static int linux_noutdevs =;
static int linux_nindevs =;

    /* OSS-specific private variables */
static int oss_blockmode =;   /* flag to use "blockmode"  */
static int oss_advance_samples;

    /* don't assume we can turn all 31 bits when doing float-to-fix;
    otherwise some audio drivers (e.g. Midiman/ALSA) wrap around. */
#define FMAX
#define CLIP32(x)

/* ---------------- public routines ----------------------- */

static int oss_ndev =;
static char oss_devnames[OSS_MAXDEV][20];

    /* find out how many OSS devices we have and get their names  */
static void oss_init(void)
{}

t_multidev;

int oss_reset(int fd) {}

void oss_configure(t_oss_dev *dev, int srate, int dac, int skipblocksize,
    int suggestedblocksize)
{}

static int oss_setchannels(int fd, int wantchannels, char *devname)
{}

int oss_open_audio(int nindev,  int *indev,  int nchin,  int *chin,
    int noutdev, int *outdev, int nchout, int *chout, int rate,
        int blocksize)
{}

void oss_close_audio(void)
{}

static int linux_dacs_write(int fd,void* buf,long bytes)
{}

static int linux_adcs_read(int fd,void*  buf,long bytes)
{}

    /* query audio devices for "available" data size. */
static void oss_calcspace(void)
{}

void linux_audiostatus(void)
{}

/* this call resyncs audio output and input which will cause discontinuities
in audio output and/or input. */

static void oss_doresync(void)
{}

int oss_send_dacs(void)
{}

void oss_getdevs(char *indevlist, int *nindevs,
    char *outdevlist, int *noutdevs, int *canmulti,
        int maxdev, int devdescsize)
{}