2725 lines · 91.0 KB · C
RawDownload
/*----------------------------------------------------------------------------  ChucK Concurrent, On-the-fly Audio Programming Language    Compiler and Virtual Machine   Copyright (c) 2004 Ge Wang and Perry R. Cook.  All rights reserved.    http://chuck.stanford.edu/    http://chuck.cs.princeton.edu/   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  U.S.A.-----------------------------------------------------------------------------*/ /*** libsndfile Copyright (C) 1999-2004 Erik de Castro Lopo <erikd@mega-nerd.com>**** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU Lesser General Public License as published by** the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.**** You should have received a copy of the GNU Lesser 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.*/ //-----------------------------------------------------------------------------// name: util_sndfile.h// desc: libsndfile for ChucK//// authors: Ge Wang (gewang@cs.princeton.edu)//          Perry R. Cook (prc@cs.princeton.edu)//          Ari Lazier (alazier@alumni.princeton.edu)// libsndfile: Erik de Castro Lopo (erikd@mega-nerd.com)//-----------------------------------------------------------------------------#ifndef __UTIL_SNDFILE_H__#define __UTIL_SNDFILE_H__ #include <stdio.h>#include <stdlib.h>  // XXX philipd this might break things?// these defines were placed after the machine-dependent// checks below...i'm not sure why #define COMPILER_IS_GCC 1#define CPU_CLIPS_NEGATIVE 1#define ENABLE_EXPERIMENTAL_CODE 0#define GCC_MAJOR_VERSION 3#define HAVE_CALLOC 1#define HAVE_CEIL 1#define HAVE_DECL_S_IRGRP 1#define HAVE_DLFCN_H 1#define HAVE_FLEXIBLE_ARRAY 1#define HAVE_FLOOR 1#define HAVE_FMOD 1#define HAVE_FREE 1#define HAVE_FSTAT 1#define HAVE_FSYNC 1#define HAVE_FTRUNCATE 1#define HAVE_GETPAGESIZE 1#define HAVE_GMTIME 1#define HAVE_GMTIME_R 1#define HAVE_INTTYPES_H 1#define HAVE_LIBM 1#define HAVE_LSEEK 1#define HAVE_MALLOC 1#define HAVE_MEMORY_H 1#define HAVE_MMAP 1#define HAVE_OPEN 1#define HAVE_READ 1#define HAVE_REALLOC 1#define HAVE_SNPRINTF 1#define HAVE_STDINT_H 1#define HAVE_STDLIB_H 1#define HAVE_STRINGS_H 1#define HAVE_STRING_H 1#define HAVE_SYS_STAT_H 1#define HAVE_SYS_TYPES_H 1#define HAVE_SYS_WAIT_H 1#define HAVE_VSNPRINTF 1#define HAVE_WRITE 1#define PACKAGE "libsndfile"#define PACKAGE_BUGREPORT "erikd@mega-nerd.com"#define PACKAGE_NAME "libsndfile"#define PACKAGE_STRING "libsndfile 1.0.10"#define PACKAGE_TARNAME "libsndfile"#define PACKAGE_VERSION "1.0.10" #define SIZEOF_DOUBLE 8#define SIZEOF_FLOAT 4#define SIZEOF_INT 4#define SIZEOF_LONG 4#define SIZEOF_OFF_T 8#define SIZEOF_SF_COUNT_T 8#define SIZEOF_SHORT 2#define SIZEOF_SIZE_T 4#define SIZEOF_SSIZE_T 4#define SIZEOF_VOIDP 4#define STDC_HEADERS 1 #define VERSION "1.0.10" #ifdef __MACOSX_CORE__#define CPU_CLIPS_POSITIVE 1#ifdef __LITTLE_ENDIAN__#define CPU_IS_BIG_ENDIAN 0#define CPU_IS_LITTLE_ENDIAN 1#define HAVE_LRINTF 1#define HAVE_LRINT 1#else#define CPU_IS_BIG_ENDIAN 1#define CPU_IS_LITTLE_ENDIAN 0#endif#define HAVE_PREAD 1#define HAVE_PWRITE 1#define OS_IS_MACOSX 1#define OS_IS_WIN32 0#define TYPEOF_SF_COUNT_T off_t#endif #if     defined(__PLATFORM_WIN32__) //Dev Studio#define CPU_CLIPS_POSITIVE 0#define CPU_IS_BIG_ENDIAN 0#define CPU_IS_LITTLE_ENDIAN 1#define HAVE_LRINTF 0#define HAVE_LRINT 0#undef  HAVE_GMTIME_R#undef  HAVE_GMTIME#undef  HAVE_SNPRINTF#undef  HAVE_FLEXIBLE_ARRAY#define OS_IS_MACOSX 0#define OS_IS_WIN32 1#define TYPEOF_SF_COUNT_T off_t#endif #if     defined (__WINDOWS_PTHREAD__) //Cygwin#define CPU_CLIPS_POSITIVE 0#define CPU_IS_BIG_ENDIAN 0#define CPU_IS_LITTLE_ENDIAN 1#define HAVE_LRINTF 0#define HAVE_LRINT 0#define OS_IS_MACOSX 0#define OS_IS_WIN32 0#define TYPEOF_SF_COUNT_T off_t#endif #ifdef __LINUX_ALSA__#define HAVE_ALSA_ASOUNDLIB_H#endif #if defined(__PLATFORM_LINUX__)#define CPU_CLIPS_POSITIVE 0#define CPU_IS_BIG_ENDIAN 0#define CPU_IS_LITTLE_ENDIAN 1#define HAVE_PREAD 1#define HAVE_PWRITE 1#define OS_IS_MACOSX 0#define OS_IS_WIN32 0#define SIZEOF_OFF64_T 0#define SIZEOF_LOFF_T 8#define TYPEOF_SF_COUNT_T loff_t#define _FILE_OFFSET_BITS 64#define HAVE_FDATASYNC 1#define HAVE_ENDIAN_H 1#define HAVE_LRINTF 1#define HAVE_LRINT 1#endif #ifdef __EMSCRIPTEN__#define CPU_CLIPS_POSITIVE 1#define CPU_IS_BIG_ENDIAN 0#define CPU_IS_LITTLE_ENDIAN 1#define HAVE_LRINTF 1#define HAVE_LRINT 1#define HAVE_PREAD 1#define HAVE_PWRITE 1#define OS_IS_MACOSX 0#define OS_IS_WIN32 0#define TYPEOF_SF_COUNT_T off_t#endif   // XXX 'inline' is necessary for C compilation// in the microsoft vc6 compiler...// and other ms win32 specialteez. #ifdef __PLATFORM_WIN32__ #define C_INLINE __inline#define SF_COUNT_MAX 0x7FFFFFFFFFFFFFFF #else #define C_INLINE inline#define SF_COUNT_MAX 0x7FFFFFFFFFFFFFFFLL#define HAVE_UNISTD_H 1#define HAVE_SSIZE_T 1 #endif /*** sndfile.h -- system-wide definitions**** API documentation is in the doc/ directory of the source code tarball** and at http://www.mega-nerd.com/libsndfile/api.html.*/ #ifndef SNDFILE_H#define SNDFILE_H /* This is the version 1.0.X header file. */#define SNDFILE_1  /* For the Metrowerks CodeWarrior Pro Compiler (mainly MacOS) */ #if (defined (__MWERKS__))#else#include    <sys/types.h>#endif #ifdef __cplusplusextern "C" {#endif  /* __cplusplus */ /* The following file types can be read and written.** A file type would consist of a major type (ie SF_FORMAT_WAV) bitwise** ORed with a minor type (ie SF_FORMAT_PCM). SF_FORMAT_TYPEMASK and** SF_FORMAT_SUBMASK can be used to separate the major and minor file** types.*/ enum{   /* Major formats. */    SF_FORMAT_WAV           = 0x010000,     /* Microsoft WAV format (little endian). */    SF_FORMAT_AIFF          = 0x020000,     /* Apple/SGI AIFF format (big endian). */    SF_FORMAT_AU            = 0x030000,     /* Sun/NeXT AU format (big endian). */    SF_FORMAT_RAW           = 0x040000,     /* RAW PCM data. */    SF_FORMAT_PAF           = 0x050000,     /* Ensoniq PARIS file format. */    SF_FORMAT_SVX           = 0x060000,     /* Amiga IFF / SVX8 / SV16 format. */    SF_FORMAT_NIST          = 0x070000,     /* Sphere NIST format. */    SF_FORMAT_VOC           = 0x080000,     /* VOC files. */    SF_FORMAT_IRCAM         = 0x0A0000,     /* Berkeley/IRCAM/CARL */    SF_FORMAT_W64           = 0x0B0000,     /* Sonic Foundry's 64 bit RIFF/WAV */    SF_FORMAT_MAT4          = 0x0C0000,     /* Matlab (tm) V4.2 / GNU Octave 2.0 */    SF_FORMAT_MAT5          = 0x0D0000,     /* Matlab (tm) V5.0 / GNU Octave 2.1 */    SF_FORMAT_PVF           = 0x0E0000,     /* Portable Voice Format */    SF_FORMAT_XI            = 0x0F0000,     /* Fasttracker 2 Extended Instrument */    SF_FORMAT_HTK           = 0x100000,     /* HMM Tool Kit format */    SF_FORMAT_SDS           = 0x110000,     /* Midi Sample Dump Standard */    SF_FORMAT_AVR           = 0x120000,     /* Audio Visual Research */    SF_FORMAT_WAVEX         = 0x130000,     /* MS WAVE with WAVEFORMATEX */     /* Subtypes from here on. */     SF_FORMAT_PCM_S8        = 0x0001,       /* Signed 8 bit data */    SF_FORMAT_PCM_16        = 0x0002,       /* Signed 16 bit data */    SF_FORMAT_PCM_24        = 0x0003,       /* Signed 24 bit data */    SF_FORMAT_PCM_32        = 0x0004,       /* Signed 32 bit data */    SF_FORMAT_PCM_U8        = 0x0005,       /* Unsigned 8 bit data (WAV and RAW only) */    SF_FORMAT_FLOAT         = 0x0006,       /* 32 bit float data */    SF_FORMAT_DOUBLE        = 0x0007,       /* 64 bit float data */    SF_FORMAT_ULAW          = 0x0010,       /* U-Law encoded. */    SF_FORMAT_ALAW          = 0x0011,       /* A-Law encoded. */    SF_FORMAT_IMA_ADPCM     = 0x0012,       /* IMA ADPCM. */    SF_FORMAT_MS_ADPCM      = 0x0013,       /* Microsoft ADPCM. */    SF_FORMAT_GSM610        = 0x0020,       /* GSM 6.10 encoding. */    SF_FORMAT_VOX_ADPCM     = 0x0021,       /* OKI / Dialogix ADPCM */    SF_FORMAT_G721_32       = 0x0030,       /* 32kbs G721 ADPCM encoding. */    SF_FORMAT_G723_24       = 0x0031,       /* 24kbs G723 ADPCM encoding. */    SF_FORMAT_G723_40       = 0x0032,       /* 40kbs G723 ADPCM encoding. */    SF_FORMAT_DWVW_12       = 0x0040,       /* 12 bit Delta Width Variable Word encoding. */    SF_FORMAT_DWVW_16       = 0x0041,       /* 16 bit Delta Width Variable Word encoding. */    SF_FORMAT_DWVW_24       = 0x0042,       /* 24 bit Delta Width Variable Word encoding. */    SF_FORMAT_DWVW_N        = 0x0043,       /* N bit Delta Width Variable Word encoding. */    SF_FORMAT_DPCM_8        = 0x0050,       /* 8 bit differential PCM (XI only) */    SF_FORMAT_DPCM_16       = 0x0051,       /* 16 bit differential PCM (XI only) */     /* Endian-ness options. */     SF_ENDIAN_FILE          = 0x00000000,   /* Default file endian-ness. */    SF_ENDIAN_LITTLE        = 0x10000000,   /* Force little endian-ness. */    SF_ENDIAN_BIG           = 0x20000000,   /* Force big endian-ness. */    SF_ENDIAN_CPU           = 0x30000000,   /* Force CPU endian-ness. */     SF_FORMAT_SUBMASK       = 0x0000FFFF,    SF_FORMAT_TYPEMASK      = 0x0FFF0000,    SF_FORMAT_ENDMASK       = 0x30000000} ;   /*** The following are the valid command numbers for the sf_command()** interface.  The use of these commands is documented in the file** command.html in the doc directory of the source code distribution.*/   enum{   SFC_GET_LIB_VERSION             = 0x1000,    SFC_GET_LOG_INFO                = 0x1001,    SFC_GET_NORM_DOUBLE             = 0x1010,    SFC_GET_NORM_FLOAT              = 0x1011,    SFC_SET_NORM_DOUBLE             = 0x1012,    SFC_SET_NORM_FLOAT              = 0x1013,    SFC_GET_SIMPLE_FORMAT_COUNT     = 0x1020,    SFC_GET_SIMPLE_FORMAT           = 0x1021,    SFC_GET_FORMAT_INFO             = 0x1028,    SFC_GET_FORMAT_MAJOR_COUNT      = 0x1030,    SFC_GET_FORMAT_MAJOR            = 0x1031,    SFC_GET_FORMAT_SUBTYPE_COUNT    = 0x1032,    SFC_GET_FORMAT_SUBTYPE          = 0x1033,    SFC_CALC_SIGNAL_MAX             = 0x1040,    SFC_CALC_NORM_SIGNAL_MAX        = 0x1041,    SFC_CALC_MAX_ALL_CHANNELS       = 0x1042,    SFC_CALC_NORM_MAX_ALL_CHANNELS  = 0x1043,    SFC_SET_ADD_PEAK_CHUNK          = 0x1050,    SFC_UPDATE_HEADER_NOW           = 0x1060,    SFC_SET_UPDATE_HEADER_AUTO      = 0x1061,    SFC_FILE_TRUNCATE               = 0x1080,    SFC_SET_RAW_START_OFFSET        = 0x1090,    SFC_SET_DITHER_ON_WRITE         = 0x10A0,    SFC_SET_DITHER_ON_READ          = 0x10A1,    SFC_GET_DITHER_INFO_COUNT       = 0x10A2,    SFC_GET_DITHER_INFO             = 0x10A3,    SFC_GET_EMBED_FILE_INFO         = 0x10B0,    SFC_SET_CLIPPING                = 0x10C0,    SFC_GET_CLIPPING                = 0x10C1,    SFC_GET_INSTRUMENT              = 0x10D0,    SFC_SET_INSTRUMENT              = 0x10D1,     /* Following commands for testing only. */    SFC_TEST_IEEE_FLOAT_REPLACE     = 0x6001,     /*    ** SFC_SET_ADD_* values are deprecated and will disappear at some    ** time in the future. They are guaranteed to be here up to and    ** including version 1.0.8 to avoid breakage of existng software.    ** They currently do nothing and will continue to do nothing.    */     SFC_SET_ADD_DITHER_ON_WRITE     = 0x1070,    SFC_SET_ADD_DITHER_ON_READ      = 0x1071} ;     /*** String types that can be set and read from files. Not all file types** support this and even the file types which support one, may not support** all string types.*/  enum{   SF_STR_TITLE                    = 0x01,    SF_STR_COPYRIGHT                = 0x02,    SF_STR_SOFTWARE                 = 0x03,    SF_STR_ARTIST                   = 0x04,    SF_STR_COMMENT                  = 0x05,    SF_STR_DATE                 = 0x06} ;   enum{   /* True and false */    SF_FALSE    = 0,    SF_TRUE     = 1,     /* Modes for opening files. */    SFM_READ    = 0x10,    SFM_WRITE   = 0x20,    SFM_RDWR    = 0x30} ;   /* Pubic error values. These are guaranteed to remain unchanged for the duration** of the library major version number.** There are also a large number of private error numbers which are internal to** the library which can change at any time.*/   enum{   SF_ERR_NO_ERROR             = 0,    SF_ERR_UNRECOGNISED_FORMAT  = 1,    SF_ERR_SYSTEM               = 2} ;   /* A SNDFILE* pointer can be passed around much like stdio.h's FILE* pointer. */ typedef struct SNDFILE_tag  SNDFILE ;  /* The following typedef is system specific and is defined when libsndfile is.** compiled. sf_count_t can be one of loff_t (Linux), off_t (*BSD),** off64_t (Solaris), __int64_t (Win32) etc.*/ typedef TYPEOF_SF_COUNT_T sf_count_t ; //#define SF_COUNT_MAX      0x7FFFFFFFFFFFFFFFLL /* A pointer to a SF_INFO structure is passed to sf_open_read () and filled in.** On write, the SF_INFO structure is filled in by the user and passed into** sf_open_write ().*/ struct SF_INFO{   sf_count_t  frames ;        /* Used to be called samples.  Changed to avoid confusion. */    int         samplerate ;    int         channels ;    int         format ;    int         sections ;    int         seekable ;} ; typedef struct SF_INFO SF_INFO ; /* The SF_FORMAT_INFO struct is used to retrieve information about the sound** file formats libsndfile supports using the sf_command () interface.**** Using this interface will allow applications to support new file formats** and encoding types when libsndfile is upgraded, without requiring** re-compilation of the application.**** Please consult the libsndfile documentation (particularly the information** on the sf_command () interface) for examples of its use.*/ typedef struct{   int         format ;    const char  *name ;    const char  *extension ;} SF_FORMAT_INFO ; /*** Enums and typedefs for adding dither on read and write.** See the html documentation for sf_command(), SFC_SET_DITHER_ON_WRITE** and SFC_SET_DITHER_ON_READ.*/ enum{   SFD_DEFAULT_LEVEL   = 0,    SFD_CUSTOM_LEVEL    = 0x40000000,     SFD_NO_DITHER       = 500,    SFD_WHITE           = 501,    SFD_TRIANGULAR_PDF  = 502} ; typedef struct{   int         type ;    double      level ;    const char  *name ;} SF_DITHER_INFO ; /* Struct used to retrieve information about a file embedded within a** larger file. See SFC_GET_EMBED_FILE_INFO.*/ typedef struct{   sf_count_t  offset ;    sf_count_t  length ;} SF_EMBED_FILE_INFO ; /* Struct used to retrieve music sample information from a file.*/ typedef struct{   int basenote ;    int gain ;

Lines 1–500 of 2725.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t