This is sgiplay.c in view mode; [Download] [Up]
#include <config.h>
#include <useconfig.h>
#include <stdio.h>
#include <math.h>
#include <errno.h>
#include <ctype.h>
#include <fcntl.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/param.h>
#include <sys/signal.h>
#include <stropts.h>
#include <sys/ioctl.h>
#define TRUE 1
#define FALSE 0
#include <audio.h>
#include "proto.h"
#include "getargs.h"
#include "hplay.h"
#define SAMP_RATE 11025
long samp_rate = SAMP_RATE;
/* Audio Parameters */
int Verbose = FALSE; /* verbose messages */
int Immediate = FALSE; /* Should we hang waiting for device ? */
static int async = TRUE;
char *Ifile; /* current filename */
static ALconfig alconf;
static ALport alprt;
/* sgi system doesn't need to be opened */
static int audio_open
PROTO((void))
{
long pvbuf[2];
long buflen;
pvbuf[0] = AL_OUTPUT_RATE;
pvbuf[1] = samp_rate;
buflen = 2;
ALsetparams(AL_DEFAULT_DEVICE, pvbuf, buflen);
alconf = ALnewconfig();
ALsetwidth(alconf, AL_SAMPLE_16);
ALsetchannels(alconf, AL_MONO);
alprt = ALopenport("say", "w", alconf);
if (alprt == NULL)
{
fprintf(stderr, "cannot open audio port\n");
ALfreeconfig(alconf);
return 1;
}
return 0;
}
/* sgi system */
int
audio_init(int argc, char **argv)
{
argc = getargs("Sun Audio",argc, argv,
/* Really should support sample rate ... */
NULL);
if (help_only)
return argc;
audio_open();
return argc;
}
void
audio_term(void)
{
/* on sgi systems, wait for port to complete */
while (ALgetfilled(alprt) != 0)
{
sleep(1);
}
ALcloseport(alprt);
}
void
audio_play(int n, short *data)
{
ALwritesamps(alprt, (void *) data, (long) n);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.