This is sndio.h in view mode; [Download] [Up]
#include <whoami.h> #include <carl/defaults.h> /* * on multi-disk systems, if the cylinder size (or block size) is different, * in order to copy files from one device to another with cpsf, you must enter * the largest common integer factor below. E.g., CDC9766 has a cylinder size * of 311296 and an RA81 has 365568. Their LCF is 1024. If you don't know, * a good guess is 512. */ #define LARGEST_COMMON_FACTOR 1024 /* * bytes per sector. */ #define BPSECTOR 512 #define DEFNc "1" /* number of channels */ #define DEFPM "s" /* packing mode */ #define DEFRT "r" /* realtime (contiguous) */ #define DEFPC "0644" /* packing mode */ #define DEFNM "test" /* default file name */ #define DHOLD "S" /* default hold mode S==scratch, H==hold, K==keep */ #define DEFNC "1" /* number of storage blocks (cylinders) */ /* uses slow sampling rate */ #define DFLTVALS { DEFNc, DEFSR, DEFPM, DEFNC, DEFRT, DEFPC, DEFNM, DHOLD } /* uses fast sampling rate */ #define DFLTVALF { DEFNc, DHISR, DEFPM, DEFNC, DEFRT, DEFPC, DEFNM, DHOLD } #define DFLTARGS "cRPCtpfH" #define DEVDS0 "/dev/ds0" #define DEVDSR0 "/dev/dsreset0" /* * CDC9766 disk: * bytes sectors tracks cyls * per/---------------------------------------------------------------- * sector 512 1 * track 16384 32 1 * cyl 311296 608 19 1 * pack 256199608 500384 15637 823 * * Thus, if the entire pack were in 16 bit samples, it could store * 256199608/2/50000/60 = 42 minutes of sound. */ /* * DEC rm80 disk: * bytes sectors tracks cyls * per/---------------------------------------------------------------- * sector 512 1 * track 15872 31 1 * cyl 222208 434 14 1 * pack 124214272 242606 7826 559 */ /* macros for sfd->rw field. */ #define SFCLOSED 0 #define SFREAD 01 #define SFWRITE 02 #define SFOPEN 04 #define SFFLUSH 010 #define SFOREAD 020 #define SFOWRITE 040 /* values for sfd->rtflag - realtime, and nonrealtime, respectively. */ #define RT 'r' #define NRT 'n' /* i/o error codes */ /* non-realtime file opened as realtime file */ #define RTIOCONFLICT 1 /* no sound file disk */ #define NORAWDEV 2 /* cylinder access beyond file boundary or beyond device boundary */ #define SFBNDER 4 /* error in reading sdf */ #define READSFER 8 /* sfd incomplete or garbaged */ #define SFDER 16 /* realtime file, but no cylinders allocated */ #define NOCPER 32 /* i/o error */ #define IOER 64 #define SFNOFILE 128 /* packing modes */ #define PM16BIT 's' #define PMFLOAT 'f' /* bytes per DSC 16 bit fixed point sample */ #define BP16BIT sizeof(short) /* bytes per VAX float sample */ #define BPFLOAT sizeof(float) /* values for sfe->fprot protection field */ #define SF_IWRITE 0200 #define SF_IREAD 0400 #define SF_GWRITE 020 #define SF_GREAD 040 #define SF_OWRITE 02 #define SF_OREAD 04 /* dskblk - a member of the sndesc structure, forms a linked list of * dsk blocks allocated to a file. */ struct dskblk { char flag; /* USED, UNUSED, ALLOCATED, FREED, EOLIST */ long base; /* abs cyl. base */ long len; /* length */ long seq; /* sequence number of block for NRT files */ char *dfn; /* associated filename, for dsk free list */ long cd; /* assoc. filename creation date for free list*/ struct dskblk *next; struct dskblk *last; struct sndesc *dsksfd; /* ptr to assoc. sfd structure */ }; /* inclist - a member of the sndesc structure, forms a linked list * of all include files. */ struct inclist { char *fn; struct inclist *incnext; struct inclist *inclast; }; /* comlist - a member of the sndesc structure, forms a linked list * of all comments. */ struct comlist { char *cmt; struct comlist *comnext; struct comlist *comlast; }; struct csnd_prop { char *cprop_name; char *cprop_val; struct csnd_prop *cprop_next; }; /* This structure contains everything that needs to be known about a * sound file in core. Note: '~' in the comment field * after a declaration means the declared object is only used in * memory and is not stored in the sound descriptor file. * It is filled by readsdf and written by writesdf. * It can be set up most conveniently within a program by setsfd(). * checksfd() can be used to validate a structure. */ # ifndef IRCAM_SFS struct sndesc { struct sndesc *nxtsdf;/* link to next sndesc structure */ struct sndesc *lstsdf;/* link to last sndesc structure */ char *sfn; /* sound file name */ char *sfown; /* owner of file */ char rtflag; /* set to RT if realtime file */ int fprot; /* file protection, kept in msfd as well. */ int fhold; /* file longevity: scratch hold or keep */ int fid; /* ~ file descriptor for raw device */ int spid; /* who most recently opened the file */ long ncyls; /* total number of cylinders */ struct dskblk *cp; /* * Pointer to linked list of disk cylinders. If rtflag !=0 then there will be but one link, else each link points to a set of contiguous disk cylinders. Last link has flag EOLIST, not a valid block, points to first block for circularity */ char *lkfile;/* ~ file to use as lock for this sound file */ long secptr; /* ~ virtual current sector number */ int bufsiz; /* ~ size of i/o buffer in BYTES, from sfstab */ /* set by sfstab = to a track of the disk */ int blksiz; /* ~ size of a disk storage unit for this disk */ /* set by sfstab = to a cylinder of the disk */ int sbptr; /* ~ current BYTE in sb */ int sbcnt; /* ~ count of remaining BYTES in sb*/ int bdir; /* ~ buffer direction: SFWRITE or SFREAD */ int bfvb; /* ~ first valid byte in buffer */ short *sb; /* ~ short sample buffer array (only one used) */ float *fb; /* ~ floating sample buffer array (only one used) */ int ssize; /* ~ sample size in bytes */ int nsib; /* ~ # SAMPLES in buffer for this transaction */ int rw; /* ~ SFWRITE or SFREAD, or both, plus SFOPEN */ int eof; /* ~ end of file has been reached */ int err; /* ~ !=0 if error, gives error code */ float sr; /* sampling rate (samples per second) */ char pm; /* packing mode of samples, == PM16BIT or PMFLOAT */ int nc; /* number of channels */ long fs; /* total samples in file */ long cdate; /* creation date, in system date format */ long rdate; /* date last referenced */ long adate; /* date last altered */ long dumpd; /* date last dumped */ long tpkey; /* tape locator */ struct comlist *comsdf; /* pointer to linked list of comments */ struct inclist *inclsdf; /* pointer to linked list of names of files */ struct csnd_prop *csnd_p; /* property list from/to PROCOM header */ }; # endif IRCAM_SFS #define getfloat(fptr)fgetfloat(fptr,stdin) #define getshort(sptr)fgetshort(sptr,stdin) typedef struct sndesc CSNDFILE; extern char crack(); extern char *arg_option; extern int arg_index; extern float sfexpr(); extern CSNDFILE *cpsfd(); float fsndi(); extern CSNDFILE *accesf(); extern CSNDFILE *opensf(); char *polish(); extern CSNDFILE *setsfd(); extern CSNDFILE *sopensf(); extern char *getsfile();
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.