/* $OpenBSD: afile.h,v 1.2 2020/02/09 19:58:17 ratchov Exp $ */ /* * Copyright (c) 2008 Alexandre Ratchov * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef AFILE_H #define AFILE_H #include #include "dsp.h" struct afile { struct aparams par; /* file params */ #define AFILE_FMT_PCM 0 /* integers (fixed point) */ #define AFILE_FMT_ULAW 1 /* 8-bit mu-law */ #define AFILE_FMT_ALAW 2 /* 8-bit a-law */ #define AFILE_FMT_FLOAT 3 /* IEEE 754 32-bit floats */ int fmt; /* one of above */ int rate; /* file sample rate */ int nch; /* file channel count */ #define AFILE_HDR_AUTO 0 /* guess from file name */ #define AFILE_HDR_RAW 1 /* headerless aka "raw" file */ #define AFILE_HDR_WAV 2 /* microsoft .wav */ #define AFILE_HDR_AIFF 3 /* apple .aiff */ #define AFILE_HDR_AU 4 /* sun/next .au */ int hdr; /* header type */ int fd; /* file descriptor */ #define AFILE_FREAD 1 /* open for reading */ #define AFILE_FWRITE 2 /* open for writing */ int flags; /* bitmap of above */ off_t curpos; /* read/write position (bytes) */ off_t startpos; /* where payload starts */ off_t endpos; /* where payload ends */ off_t maxpos; /* max allowed pos (.wav limitation) */ char *path; /* file name (debug only) */ }; int afile_open(struct afile *, char *, int, int, struct aparams *, int, int); size_t afile_read(struct afile *, void *, size_t); size_t afile_write(struct afile *, void *, size_t); int afile_seek(struct afile *, off_t); void afile_close(struct afile *); #endif /* !defined(AFILE_H) */