• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

src/audio/header/OpenAL_util.h

Go to the documentation of this file.
00001 #include "OpenAL.h"
00002 #include <stdio.h>
00003 //#include <string.h>
00004 #include <sys/types.h>
00005 #include <sys/stat.h>
00006 
00007 #if HAVE_STAT
00008 #       if HAVE_UNISTD_H
00009 #               include <unistd.h>
00010 #       endif
00011 #       define structStat struct stat
00012 #elif HAVE__STAT || WIN32
00013 #       ifdef UNICODE
00014 #               define stat(p,b) _wstat((p),(b))
00015 #       else
00016 #               define stat(p,b) _stat((p),(b))
00017 #       endif
00018 #       define structStat struct _stat
00019 #else
00020 #       error No stat-like function on this platform
00021 #endif
00022 
00023 namespace REAL
00024 {
00025         namespace AUDIO
00026         {
00027                 struct InputStream
00028                 {
00029                   ALboolean isFileStream;
00030                   rchar *fileName;
00031                   size_t remainingLength;
00032                   union
00033                   {
00034                         FILE *fileDescriptor;       /* for file streams */
00035                         const ALvoid *data;         /* for memory streams */
00036                   } u;
00037                 };
00038 
00039                 struct BufferData
00040                 {
00041                         ALvoid *data;
00042                         size_t length;
00043                         ALint numChannels;
00044                         ALint bitsPerSample;
00045                         ALfloat sampleFrequency;
00046                 };
00047 
00048                 typedef enum
00049                 {
00050                         LittleEndian,
00051                         BigEndian,
00052                         UnknwonEndian
00053                 } Endianess;
00054 
00055                 typedef short Int16BigEndian;
00056                 typedef unsigned short UInt16LittleEndian;
00057                 typedef int Int32BigEndian;
00058                 typedef unsigned int UInt32LittleEndian;
00059 
00060                 /* test from Harbison & Steele, "C - A Reference Manual", section 6.1.2 */
00061                 static Endianess endianess(void)
00062                 {
00063                         union
00064                         {
00065                                 long l;
00066                                 char c[sizeof(long)];
00067                         } u;
00068 
00069                         u.l = 1;
00070                         return (u.c[0] == 1) ? LittleEndian :
00071                                 ((u.c[sizeof(long) - 1] == 1) ? BigEndian : UnknwonEndian);
00072                 }
00073 
00074                 typedef ALvoid *Codec(ALvoid *data, size_t length, ALint numChannels, ALint bitsPerSample, ALfloat sampleFrequency);
00075                 Codec _alutCodecLinear;
00076                 Codec _alutCodecPCM8s;
00077                 Codec _alutCodecPCM16;
00078                 Codec _alutCodecULaw;
00079                 Codec _alutCodecALaw;
00080 
00081                 FILEFORMAT getFormatByExt(rchar* ext);
00082 
00083                 BufferData* loadRawFile(InputStream *stream);
00084                 BufferData* loadWavFile(InputStream *stream);
00085                 BufferData* loadAUFile(InputStream *stream);
00086                 BufferData* loadFile(InputStream *stream);
00087                 ALuint alutCreateBufferFromFile(rchar *fileName);
00088                 InputStream* _alutInputStreamConstructFromFile(rchar *fileName);
00089                 ALboolean _alutInputStreamDestroy(InputStream *stream);
00090                 ALboolean streamRead(InputStream *stream, void *ptr, size_t numBytesToRead);
00091                 ALvoid* _alutInputStreamRead(InputStream *stream, size_t length);
00092                 BufferData* _alutBufferDataConstruct(ALvoid *data, size_t length, ALint numChannels,
00093                                 ALint bitsPerSample, ALfloat sampleFrequency);
00094                 ALvoid* _alutCodecLinear(ALvoid *data, size_t length, ALint numChannels,
00095                                 ALint bitsPerSample, ALfloat sampleFrequency);
00096                 ALboolean _alutInputStreamReadInt32BE(InputStream *stream, int *value);
00097                 ALboolean _alutInputStreamReadUInt16LE(InputStream *stream, unsigned short *value);
00098                 ALboolean _alutInputStreamReadUInt32LE(InputStream *stream, unsigned int *value);
00099                 ALboolean _alutInputStreamSkip (InputStream *stream, size_t numBytesToSkip);
00100                 ALboolean _alutInputStreamEOF(InputStream *stream);
00101                 ALuint _alutCreateBufferFromInputStream (InputStream *stream);
00102         }
00103 }

Generated on Fri Jun 18 2010 17:48:39 for Cannonball by  doxygen 1.7.0