al.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  1. #ifndef AL_AL_H
  2. #define AL_AL_H
  3. #if defined(__cplusplus)
  4. extern "C" {
  5. #endif
  6. #if defined(_WIN32) && !defined(_XBOX)
  7. /* _OPENAL32LIB is deprecated */
  8. #if defined(AL_BUILD_LIBRARY) || defined (_OPENAL32LIB)
  9. #define AL_API __declspec(dllexport)
  10. #else
  11. #define AL_API __declspec(dllimport)
  12. #endif
  13. #else
  14. #define AL_API extern
  15. #endif
  16. #if defined(_WIN32)
  17. #define AL_APIENTRY __cdecl
  18. #else
  19. #define AL_APIENTRY
  20. #endif
  21. #if TARGET_OS_MAC
  22. #pragma export on
  23. #endif
  24. /* The OPENAL, ALAPI, and ALAPIENTRY macros are deprecated, but are included for applications porting code
  25. from AL 1.0 */
  26. #define OPENAL
  27. #define ALAPI AL_API
  28. #define ALAPIENTRY AL_APIENTRY
  29. #define AL_VERSION_1_0
  30. #define AL_VERSION_1_1
  31. /** 8-bit boolean */
  32. typedef char ALboolean;
  33. /** character */
  34. typedef char ALchar;
  35. /** signed 8-bit 2's complement integer */
  36. typedef char ALbyte;
  37. /** unsigned 8-bit integer */
  38. typedef unsigned char ALubyte;
  39. /** signed 16-bit 2's complement integer */
  40. typedef short ALshort;
  41. /** unsigned 16-bit integer */
  42. typedef unsigned short ALushort;
  43. /** signed 32-bit 2's complement integer */
  44. typedef int ALint;
  45. /** unsigned 32-bit integer */
  46. typedef unsigned int ALuint;
  47. /** non-negative 32-bit binary integer size */
  48. typedef int ALsizei;
  49. /** enumerated 32-bit value */
  50. typedef int ALenum;
  51. /** 32-bit IEEE754 floating-point */
  52. typedef float ALfloat;
  53. /** 64-bit IEEE754 floating-point */
  54. typedef double ALdouble;
  55. /** void type (for opaque pointers only) */
  56. typedef void ALvoid;
  57. /* Enumerant values begin at column 50. No tabs. */
  58. /* bad value */
  59. #define AL_INVALID -1
  60. #define AL_NONE 0
  61. /* Boolean False. */
  62. #define AL_FALSE 0
  63. /** Boolean True. */
  64. #define AL_TRUE 1
  65. /** Indicate Source has relative coordinates. */
  66. #define AL_SOURCE_RELATIVE 0x202
  67. /**
  68. * Directional source, inner cone angle, in degrees.
  69. * Range: [0-360]
  70. * Default: 360
  71. */
  72. #define AL_CONE_INNER_ANGLE 0x1001
  73. /**
  74. * Directional source, outer cone angle, in degrees.
  75. * Range: [0-360]
  76. * Default: 360
  77. */
  78. #define AL_CONE_OUTER_ANGLE 0x1002
  79. /**
  80. * Specify the pitch to be applied, either at source,
  81. * or on mixer results, at listener.
  82. * Range: [0.5-2.0]
  83. * Default: 1.0
  84. */
  85. #define AL_PITCH 0x1003
  86. /**
  87. * Specify the current location in three dimensional space.
  88. * OpenAL, like OpenGL, uses a right handed coordinate system,
  89. * where in a frontal default view X (thumb) points right,
  90. * Y points up (index finger), and Z points towards the
  91. * viewer/camera (middle finger).
  92. * To switch from a left handed coordinate system, flip the
  93. * sign on the Z coordinate.
  94. * Listener position is always in the world coordinate system.
  95. */
  96. #define AL_POSITION 0x1004
  97. /** Specify the current direction. */
  98. #define AL_DIRECTION 0x1005
  99. /** Specify the current velocity in three dimensional space. */
  100. #define AL_VELOCITY 0x1006
  101. /**
  102. * Indicate whether source is looping.
  103. * Type: ALboolean?
  104. * Range: [AL_TRUE, AL_FALSE]
  105. * Default: FALSE.
  106. */
  107. #define AL_LOOPING 0x1007
  108. /**
  109. * Indicate the buffer to provide sound samples.
  110. * Type: ALuint.
  111. * Range: any valid Buffer id.
  112. */
  113. #define AL_BUFFER 0x1009
  114. /**
  115. * Indicate the gain (volume amplification) applied.
  116. * Type: ALfloat.
  117. * Range: ]0.0- ]
  118. * A value of 1.0 means un-attenuated/unchanged.
  119. * Each division by 2 equals an attenuation of -6dB.
  120. * Each multiplicaton with 2 equals an amplification of +6dB.
  121. * A value of 0.0 is meaningless with respect to a logarithmic
  122. * scale; it is interpreted as zero volume - the channel
  123. * is effectively disabled.
  124. */
  125. #define AL_GAIN 0x100A
  126. /*
  127. * Indicate minimum source attenuation
  128. * Type: ALfloat
  129. * Range: [0.0 - 1.0]
  130. *
  131. * Logarthmic
  132. */
  133. #define AL_MIN_GAIN 0x100D
  134. /**
  135. * Indicate maximum source attenuation
  136. * Type: ALfloat
  137. * Range: [0.0 - 1.0]
  138. *
  139. * Logarthmic
  140. */
  141. #define AL_MAX_GAIN 0x100E
  142. /**
  143. * Indicate listener orientation.
  144. *
  145. * at/up
  146. */
  147. #define AL_ORIENTATION 0x100F
  148. /**
  149. * Specify the channel mask. (Creative)
  150. * Type: ALuint
  151. * Range: [0 - 255]
  152. */
  153. #define AL_CHANNEL_MASK 0x3000
  154. /**
  155. * Source state information.
  156. */
  157. #define AL_SOURCE_STATE 0x1010
  158. #define AL_INITIAL 0x1011
  159. #define AL_PLAYING 0x1012
  160. #define AL_PAUSED 0x1013
  161. #define AL_STOPPED 0x1014
  162. /**
  163. * Buffer Queue params
  164. */
  165. #define AL_BUFFERS_QUEUED 0x1015
  166. #define AL_BUFFERS_PROCESSED 0x1016
  167. /**
  168. * Source buffer position information
  169. */
  170. #define AL_SEC_OFFSET 0x1024
  171. #define AL_SAMPLE_OFFSET 0x1025
  172. #define AL_BYTE_OFFSET 0x1026
  173. /*
  174. * Source type (Static, Streaming or undetermined)
  175. * Source is Static if a Buffer has been attached using AL_BUFFER
  176. * Source is Streaming if one or more Buffers have been attached using alSourceQueueBuffers
  177. * Source is undetermined when it has the NULL buffer attached
  178. */
  179. #define AL_SOURCE_TYPE 0x1027
  180. #define AL_STATIC 0x1028
  181. #define AL_STREAMING 0x1029
  182. #define AL_UNDETERMINED 0x1030
  183. /** Sound samples: format specifier. */
  184. #define AL_FORMAT_MONO8 0x1100
  185. #define AL_FORMAT_MONO16 0x1101
  186. #define AL_FORMAT_STEREO8 0x1102
  187. #define AL_FORMAT_STEREO16 0x1103
  188. /**
  189. * source specific reference distance
  190. * Type: ALfloat
  191. * Range: 0.0 - +inf
  192. *
  193. * At 0.0, no distance attenuation occurs. Default is
  194. * 1.0.
  195. */
  196. #define AL_REFERENCE_DISTANCE 0x1020
  197. /**
  198. * source specific rolloff factor
  199. * Type: ALfloat
  200. * Range: 0.0 - +inf
  201. *
  202. */
  203. #define AL_ROLLOFF_FACTOR 0x1021
  204. /**
  205. * Directional source, outer cone gain.
  206. *
  207. * Default: 0.0
  208. * Range: [0.0 - 1.0]
  209. * Logarithmic
  210. */
  211. #define AL_CONE_OUTER_GAIN 0x1022
  212. /**
  213. * Indicate distance above which sources are not
  214. * attenuated using the inverse clamped distance model.
  215. *
  216. * Default: +inf
  217. * Type: ALfloat
  218. * Range: 0.0 - +inf
  219. */
  220. #define AL_MAX_DISTANCE 0x1023
  221. /**
  222. * Sound samples: frequency, in units of Hertz [Hz].
  223. * This is the number of samples per second. Half of the
  224. * sample frequency marks the maximum significant
  225. * frequency component.
  226. */
  227. #define AL_FREQUENCY 0x2001
  228. #define AL_BITS 0x2002
  229. #define AL_CHANNELS 0x2003
  230. #define AL_SIZE 0x2004
  231. /**
  232. * Buffer state.
  233. *
  234. * Not supported for public use (yet).
  235. */
  236. #define AL_UNUSED 0x2010
  237. #define AL_PENDING 0x2011
  238. #define AL_PROCESSED 0x2012
  239. /** Errors: No Error. */
  240. #define AL_NO_ERROR AL_FALSE
  241. /**
  242. * Invalid Name paramater passed to AL call.
  243. */
  244. #define AL_INVALID_NAME 0xA001
  245. /**
  246. * Invalid parameter passed to AL call.
  247. */
  248. #define AL_ILLEGAL_ENUM 0xA002
  249. #define AL_INVALID_ENUM 0xA002
  250. /**
  251. * Invalid enum parameter value.
  252. */
  253. #define AL_INVALID_VALUE 0xA003
  254. /**
  255. * Illegal call.
  256. */
  257. #define AL_ILLEGAL_COMMAND 0xA004
  258. #define AL_INVALID_OPERATION 0xA004
  259. /**
  260. * No mojo.
  261. */
  262. #define AL_OUT_OF_MEMORY 0xA005
  263. /** Context strings: Vendor Name. */
  264. #define AL_VENDOR 0xB001
  265. #define AL_VERSION 0xB002
  266. #define AL_RENDERER 0xB003
  267. #define AL_EXTENSIONS 0xB004
  268. /** Global tweakage. */
  269. /**
  270. * Doppler scale. Default 1.0
  271. */
  272. #define AL_DOPPLER_FACTOR 0xC000
  273. /**
  274. * Tweaks speed of propagation.
  275. */
  276. #define AL_DOPPLER_VELOCITY 0xC001
  277. /**
  278. * Speed of Sound in units per second
  279. */
  280. #define AL_SPEED_OF_SOUND 0xC003
  281. /**
  282. * Distance models
  283. *
  284. * used in conjunction with DistanceModel
  285. *
  286. * implicit: NONE, which disances distance attenuation.
  287. */
  288. #define AL_DISTANCE_MODEL 0xD000
  289. #define AL_INVERSE_DISTANCE 0xD001
  290. #define AL_INVERSE_DISTANCE_CLAMPED 0xD002
  291. #define AL_LINEAR_DISTANCE 0xD003
  292. #define AL_LINEAR_DISTANCE_CLAMPED 0xD004
  293. #define AL_EXPONENT_DISTANCE 0xD005
  294. #define AL_EXPONENT_DISTANCE_CLAMPED 0xD006
  295. #if !defined(AL_NO_PROTOTYPES)
  296. /*
  297. * Renderer State management
  298. */
  299. AL_API void AL_APIENTRY alEnable( ALenum capability );
  300. AL_API void AL_APIENTRY alDisable( ALenum capability );
  301. AL_API ALboolean AL_APIENTRY alIsEnabled( ALenum capability );
  302. /*
  303. * State retrieval
  304. */
  305. AL_API const ALchar* AL_APIENTRY alGetString( ALenum param );
  306. AL_API void AL_APIENTRY alGetBooleanv( ALenum param, ALboolean* data );
  307. AL_API void AL_APIENTRY alGetIntegerv( ALenum param, ALint* data );
  308. AL_API void AL_APIENTRY alGetFloatv( ALenum param, ALfloat* data );
  309. AL_API void AL_APIENTRY alGetDoublev( ALenum param, ALdouble* data );
  310. AL_API ALboolean AL_APIENTRY alGetBoolean( ALenum param );
  311. AL_API ALint AL_APIENTRY alGetInteger( ALenum param );
  312. AL_API ALfloat AL_APIENTRY alGetFloat( ALenum param );
  313. AL_API ALdouble AL_APIENTRY alGetDouble( ALenum param );
  314. /*
  315. * Error support.
  316. * Obtain the most recent error generated in the AL state machine.
  317. */
  318. AL_API ALenum AL_APIENTRY alGetError( void );
  319. /*
  320. * Extension support.
  321. * Query for the presence of an extension, and obtain any appropriate
  322. * function pointers and enum values.
  323. */
  324. AL_API ALboolean AL_APIENTRY alIsExtensionPresent( const ALchar* extname );
  325. AL_API void* AL_APIENTRY alGetProcAddress( const ALchar* fname );
  326. AL_API ALenum AL_APIENTRY alGetEnumValue( const ALchar* ename );
  327. /*
  328. * LISTENER
  329. * Listener represents the location and orientation of the
  330. * 'user' in 3D-space.
  331. *
  332. * Properties include: -
  333. *
  334. * Gain AL_GAIN ALfloat
  335. * Position AL_POSITION ALfloat[3]
  336. * Velocity AL_VELOCITY ALfloat[3]
  337. * Orientation AL_ORIENTATION ALfloat[6] (Forward then Up vectors)
  338. */
  339. /*
  340. * Set Listener parameters
  341. */
  342. AL_API void AL_APIENTRY alListenerf( ALenum param, ALfloat value );
  343. AL_API void AL_APIENTRY alListener3f( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
  344. AL_API void AL_APIENTRY alListenerfv( ALenum param, const ALfloat* values );
  345. AL_API void AL_APIENTRY alListeneri( ALenum param, ALint value );
  346. AL_API void AL_APIENTRY alListener3i( ALenum param, ALint value1, ALint value2, ALint value3 );
  347. AL_API void AL_APIENTRY alListeneriv( ALenum param, const ALint* values );
  348. /*
  349. * Get Listener parameters
  350. */
  351. AL_API void AL_APIENTRY alGetListenerf( ALenum param, ALfloat* value );
  352. AL_API void AL_APIENTRY alGetListener3f( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 );
  353. AL_API void AL_APIENTRY alGetListenerfv( ALenum param, ALfloat* values );
  354. AL_API void AL_APIENTRY alGetListeneri( ALenum param, ALint* value );
  355. AL_API void AL_APIENTRY alGetListener3i( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
  356. AL_API void AL_APIENTRY alGetListeneriv( ALenum param, ALint* values );
  357. /**
  358. * SOURCE
  359. * Sources represent individual sound objects in 3D-space.
  360. * Sources take the PCM data provided in the specified Buffer,
  361. * apply Source-specific modifications, and then
  362. * submit them to be mixed according to spatial arrangement etc.
  363. *
  364. * Properties include: -
  365. *
  366. * Gain AL_GAIN ALfloat
  367. * Min Gain AL_MIN_GAIN ALfloat
  368. * Max Gain AL_MAX_GAIN ALfloat
  369. * Position AL_POSITION ALfloat[3]
  370. * Velocity AL_VELOCITY ALfloat[3]
  371. * Direction AL_DIRECTION ALfloat[3]
  372. * Head Relative Mode AL_SOURCE_RELATIVE ALint (AL_TRUE or AL_FALSE)
  373. * Reference Distance AL_REFERENCE_DISTANCE ALfloat
  374. * Max Distance AL_MAX_DISTANCE ALfloat
  375. * RollOff Factor AL_ROLLOFF_FACTOR ALfloat
  376. * Inner Angle AL_CONE_INNER_ANGLE ALint or ALfloat
  377. * Outer Angle AL_CONE_OUTER_ANGLE ALint or ALfloat
  378. * Cone Outer Gain AL_CONE_OUTER_GAIN ALint or ALfloat
  379. * Pitch AL_PITCH ALfloat
  380. * Looping AL_LOOPING ALint (AL_TRUE or AL_FALSE)
  381. * MS Offset AL_MSEC_OFFSET ALint or ALfloat
  382. * Byte Offset AL_BYTE_OFFSET ALint or ALfloat
  383. * Sample Offset AL_SAMPLE_OFFSET ALint or ALfloat
  384. * Attached Buffer AL_BUFFER ALint
  385. * State (Query only) AL_SOURCE_STATE ALint
  386. * Buffers Queued (Query only) AL_BUFFERS_QUEUED ALint
  387. * Buffers Processed (Query only) AL_BUFFERS_PROCESSED ALint
  388. */
  389. /* Create Source objects */
  390. AL_API void AL_APIENTRY alGenSources( ALsizei n, ALuint* sources );
  391. /* Delete Source objects */
  392. AL_API void AL_APIENTRY alDeleteSources( ALsizei n, const ALuint* sources );
  393. /* Verify a handle is a valid Source */
  394. AL_API ALboolean AL_APIENTRY alIsSource( ALuint sid );
  395. /*
  396. * Set Source parameters
  397. */
  398. AL_API void AL_APIENTRY alSourcef( ALuint sid, ALenum param, ALfloat value );
  399. AL_API void AL_APIENTRY alSource3f( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
  400. AL_API void AL_APIENTRY alSourcefv( ALuint sid, ALenum param, const ALfloat* values );
  401. AL_API void AL_APIENTRY alSourcei( ALuint sid, ALenum param, ALint value );
  402. AL_API void AL_APIENTRY alSource3i( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
  403. AL_API void AL_APIENTRY alSourceiv( ALuint sid, ALenum param, const ALint* values );
  404. /*
  405. * Get Source parameters
  406. */
  407. AL_API void AL_APIENTRY alGetSourcef( ALuint sid, ALenum param, ALfloat* value );
  408. AL_API void AL_APIENTRY alGetSource3f( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
  409. AL_API void AL_APIENTRY alGetSourcefv( ALuint sid, ALenum param, ALfloat* values );
  410. AL_API void AL_APIENTRY alGetSourcei( ALuint sid, ALenum param, ALint* value );
  411. AL_API void AL_APIENTRY alGetSource3i( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
  412. AL_API void AL_APIENTRY alGetSourceiv( ALuint sid, ALenum param, ALint* values );
  413. /*
  414. * Source vector based playback calls
  415. */
  416. /* Play, replay, or resume (if paused) a list of Sources */
  417. AL_API void AL_APIENTRY alSourcePlayv( ALsizei ns, const ALuint *sids );
  418. /* Stop a list of Sources */
  419. AL_API void AL_APIENTRY alSourceStopv( ALsizei ns, const ALuint *sids );
  420. /* Rewind a list of Sources */
  421. AL_API void AL_APIENTRY alSourceRewindv( ALsizei ns, const ALuint *sids );
  422. /* Pause a list of Sources */
  423. AL_API void AL_APIENTRY alSourcePausev( ALsizei ns, const ALuint *sids );
  424. /*
  425. * Source based playback calls
  426. */
  427. /* Play, replay, or resume a Source */
  428. AL_API void AL_APIENTRY alSourcePlay( ALuint sid );
  429. /* Stop a Source */
  430. AL_API void AL_APIENTRY alSourceStop( ALuint sid );
  431. /* Rewind a Source (set playback postiton to beginning) */
  432. AL_API void AL_APIENTRY alSourceRewind( ALuint sid );
  433. /* Pause a Source */
  434. AL_API void AL_APIENTRY alSourcePause( ALuint sid );
  435. /*
  436. * Source Queuing
  437. */
  438. AL_API void AL_APIENTRY alSourceQueueBuffers( ALuint sid, ALsizei numEntries, const ALuint *bids );
  439. AL_API void AL_APIENTRY alSourceUnqueueBuffers( ALuint sid, ALsizei numEntries, ALuint *bids );
  440. /**
  441. * BUFFER
  442. * Buffer objects are storage space for sample data.
  443. * Buffers are referred to by Sources. One Buffer can be used
  444. * by multiple Sources.
  445. *
  446. * Properties include: -
  447. *
  448. * Frequency (Query only) AL_FREQUENCY ALint
  449. * Size (Query only) AL_SIZE ALint
  450. * Bits (Query only) AL_BITS ALint
  451. * Channels (Query only) AL_CHANNELS ALint
  452. */
  453. /* Create Buffer objects */
  454. AL_API void AL_APIENTRY alGenBuffers( ALsizei n, ALuint* buffers );
  455. /* Delete Buffer objects */
  456. AL_API void AL_APIENTRY alDeleteBuffers( ALsizei n, const ALuint* buffers );
  457. /* Verify a handle is a valid Buffer */
  458. AL_API ALboolean AL_APIENTRY alIsBuffer( ALuint bid );
  459. /* Specify the data to be copied into a buffer */
  460. AL_API void AL_APIENTRY alBufferData( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq );
  461. /*
  462. * Set Buffer parameters
  463. */
  464. AL_API void AL_APIENTRY alBufferf( ALuint bid, ALenum param, ALfloat value );
  465. AL_API void AL_APIENTRY alBuffer3f( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
  466. AL_API void AL_APIENTRY alBufferfv( ALuint bid, ALenum param, const ALfloat* values );
  467. AL_API void AL_APIENTRY alBufferi( ALuint bid, ALenum param, ALint value );
  468. AL_API void AL_APIENTRY alBuffer3i( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
  469. AL_API void AL_APIENTRY alBufferiv( ALuint bid, ALenum param, const ALint* values );
  470. /*
  471. * Get Buffer parameters
  472. */
  473. AL_API void AL_APIENTRY alGetBufferf( ALuint bid, ALenum param, ALfloat* value );
  474. AL_API void AL_APIENTRY alGetBuffer3f( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
  475. AL_API void AL_APIENTRY alGetBufferfv( ALuint bid, ALenum param, ALfloat* values );
  476. AL_API void AL_APIENTRY alGetBufferi( ALuint bid, ALenum param, ALint* value );
  477. AL_API void AL_APIENTRY alGetBuffer3i( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
  478. AL_API void AL_APIENTRY alGetBufferiv( ALuint bid, ALenum param, ALint* values );
  479. /*
  480. * Global Parameters
  481. */
  482. AL_API void AL_APIENTRY alDopplerFactor( ALfloat value );
  483. AL_API void AL_APIENTRY alDopplerVelocity( ALfloat value );
  484. AL_API void AL_APIENTRY alSpeedOfSound( ALfloat value );
  485. AL_API void AL_APIENTRY alDistanceModel( ALenum distanceModel );
  486. #else /* AL_NO_PROTOTYPES */
  487. typedef void (AL_APIENTRY *LPALENABLE)( ALenum capability );
  488. typedef void (AL_APIENTRY *LPALDISABLE)( ALenum capability );
  489. typedef ALboolean (AL_APIENTRY *LPALISENABLED)( ALenum capability );
  490. typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)( ALenum param );
  491. typedef void (AL_APIENTRY *LPALGETBOOLEANV)( ALenum param, ALboolean* data );
  492. typedef void (AL_APIENTRY *LPALGETINTEGERV)( ALenum param, ALint* data );
  493. typedef void (AL_APIENTRY *LPALGETFLOATV)( ALenum param, ALfloat* data );
  494. typedef void (AL_APIENTRY *LPALGETDOUBLEV)( ALenum param, ALdouble* data );
  495. typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)( ALenum param );
  496. typedef ALint (AL_APIENTRY *LPALGETINTEGER)( ALenum param );
  497. typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)( ALenum param );
  498. typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)( ALenum param );
  499. typedef ALenum (AL_APIENTRY *LPALGETERROR)( void );
  500. typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar* extname );
  501. typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)( const ALchar* fname );
  502. typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)( const ALchar* ename );
  503. typedef void (AL_APIENTRY *LPALLISTENERF)( ALenum param, ALfloat value );
  504. typedef void (AL_APIENTRY *LPALLISTENER3F)( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
  505. typedef void (AL_APIENTRY *LPALLISTENERFV)( ALenum param, const ALfloat* values );
  506. typedef void (AL_APIENTRY *LPALLISTENERI)( ALenum param, ALint value );
  507. typedef void (AL_APIENTRY *LPALLISTENER3I)( ALenum param, ALint value1, ALint value2, ALint value3 );
  508. typedef void (AL_APIENTRY *LPALLISTENERIV)( ALenum param, const ALint* values );
  509. typedef void (AL_APIENTRY *LPALGETLISTENERF)( ALenum param, ALfloat* value );
  510. typedef void (AL_APIENTRY *LPALGETLISTENER3F)( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 );
  511. typedef void (AL_APIENTRY *LPALGETLISTENERFV)( ALenum param, ALfloat* values );
  512. typedef void (AL_APIENTRY *LPALGETLISTENERI)( ALenum param, ALint* value );
  513. typedef void (AL_APIENTRY *LPALGETLISTENER3I)( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
  514. typedef void (AL_APIENTRY *LPALGETLISTENERIV)( ALenum param, ALint* values );
  515. typedef void (AL_APIENTRY *LPALGENSOURCES)( ALsizei n, ALuint* sources );
  516. typedef void (AL_APIENTRY *LPALDELETESOURCES)( ALsizei n, const ALuint* sources );
  517. typedef ALboolean (AL_APIENTRY *LPALIlocation)( ALuint sid );
  518. typedef void (AL_APIENTRY *LPALSOURCEF)( ALuint sid, ALenum param, ALfloat value);
  519. typedef void (AL_APIENTRY *LPALSOURCE3F)( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
  520. typedef void (AL_APIENTRY *LPALSOURCEFV)( ALuint sid, ALenum param, const ALfloat* values );
  521. typedef void (AL_APIENTRY *LPALSOURCEI)( ALuint sid, ALenum param, ALint value);
  522. typedef void (AL_APIENTRY *LPALSOURCE3I)( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
  523. typedef void (AL_APIENTRY *LPALSOURCEIV)( ALuint sid, ALenum param, const ALint* values );
  524. typedef void (AL_APIENTRY *LPALGETSOURCEF)( ALuint sid, ALenum param, ALfloat* value );
  525. typedef void (AL_APIENTRY *LPALGETSOURCE3F)( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
  526. typedef void (AL_APIENTRY *LPALGETSOURCEFV)( ALuint sid, ALenum param, ALfloat* values );
  527. typedef void (AL_APIENTRY *LPALGETSOURCEI)( ALuint sid, ALenum param, ALint* value );
  528. typedef void (AL_APIENTRY *LPALGETSOURCE3I)( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
  529. typedef void (AL_APIENTRY *LPALGETSOURCEIV)( ALuint sid, ALenum param, ALint* values );
  530. typedef void (AL_APIENTRY *LPALSOURCEPLAYV)( ALsizei ns, const ALuint *sids );
  531. typedef void (AL_APIENTRY *LPALSOURCESTOPV)( ALsizei ns, const ALuint *sids );
  532. typedef void (AL_APIENTRY *LPALSOURCEREWINDV)( ALsizei ns, const ALuint *sids );
  533. typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)( ALsizei ns, const ALuint *sids );
  534. typedef void (AL_APIENTRY *LPALSOURCEPLAY)( ALuint sid );
  535. typedef void (AL_APIENTRY *LPALSOURCESTOP)( ALuint sid );
  536. typedef void (AL_APIENTRY *LPALSOURCEREWIND)( ALuint sid );
  537. typedef void (AL_APIENTRY *LPALSOURCEPAUSE)( ALuint sid );
  538. typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint sid, ALsizei numEntries, const ALuint *bids );
  539. typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint sid, ALsizei numEntries, ALuint *bids );
  540. typedef void (AL_APIENTRY *LPALGENBUFFERS)( ALsizei n, ALuint* buffers );
  541. typedef void (AL_APIENTRY *LPALDELETEBUFFERS)( ALsizei n, const ALuint* buffers );
  542. typedef ALboolean (AL_APIENTRY *LPALISBUFFER)( ALuint bid );
  543. typedef void (AL_APIENTRY *LPALBUFFERDATA)( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq );
  544. typedef void (AL_APIENTRY *LPALBUFFERF)( ALuint bid, ALenum param, ALfloat value);
  545. typedef void (AL_APIENTRY *LPALBUFFER3F)( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
  546. typedef void (AL_APIENTRY *LPALBUFFERFV)( ALuint bid, ALenum param, const ALfloat* values );
  547. typedef void (AL_APIENTRY *LPALBUFFERI)( ALuint bid, ALenum param, ALint value);
  548. typedef void (AL_APIENTRY *LPALBUFFER3I)( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
  549. typedef void (AL_APIENTRY *LPALBUFFERIV)( ALuint bid, ALenum param, const ALint* values );
  550. typedef void (AL_APIENTRY *LPALGETBUFFERF)( ALuint bid, ALenum param, ALfloat* value );
  551. typedef void (AL_APIENTRY *LPALGETBUFFER3F)( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
  552. typedef void (AL_APIENTRY *LPALGETBUFFERFV)( ALuint bid, ALenum param, ALfloat* values );
  553. typedef void (AL_APIENTRY *LPALGETBUFFERI)( ALuint bid, ALenum param, ALint* value );
  554. typedef void (AL_APIENTRY *LPALGETBUFFER3I)( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
  555. typedef void (AL_APIENTRY *LPALGETBUFFERIV)( ALuint bid, ALenum param, ALint* values );
  556. typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)( ALfloat value );
  557. typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)( ALfloat value );
  558. typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)( ALfloat value );
  559. typedef void (AL_APIENTRY *LPALDISTANCEMODEL)( ALenum distanceModel );
  560. #endif /* AL_NO_PROTOTYPES */
  561. #if TARGET_OS_MAC
  562. #pragma export off
  563. #endif
  564. #if defined(__cplusplus)
  565. } /* extern "C" */
  566. #endif
  567. #endif /* AL_AL_H */