naev 0.10.4
nlua_audio.h
1/*
2 * See Licensing and Copyright notice in naev.h
3 */
4#pragma once
5
7#include "al.h"
8#include "SDL.h"
9#include "SDL_rwops.h"
10#include "SDL_thread.h"
11#include <vorbis/vorbisfile.h>
14#include "nlua.h"
15
16#define AUDIO_METATABLE "audio"
18typedef enum LuaAudioType_e {
19 LUA_AUDIO_NULL=0,
20 LUA_AUDIO_STATIC,
21 LUA_AUDIO_STREAM,
22} LuaAudioType_t;
23
24typedef struct LuaBuffer_s {
25 ALuint buffer;
28
29typedef struct LuaAudio_s {
30#if DEBUGGING
31 char *name;
32#endif /* DEBUGGING */
33 LuaAudioType_t type;
35 ALuint source;
36 ALuint slot;
37 double volume;
38 /* When not streaming. */
40 /* When streaming. */
41 SDL_mutex *lock;
43 OggVorbis_File stream;
44 vorbis_info *info;
45 ALenum format;
47 ALfloat rg_max_scale;
48 ALuint stream_buffers[2];
49 int active;
50 SDL_Thread *th;
51 SDL_cond *cond;
53
54/*
55 * Library loading
56 */
57int nlua_loadAudio( nlua_env env );
58
59/* Basic operations. */
60LuaAudio_t* lua_toaudio( lua_State *L, int ind );
61LuaAudio_t* luaL_checkaudio( lua_State *L, int ind );
62LuaAudio_t* lua_pushaudio( lua_State *L, LuaAudio_t audio );
63int lua_isaudio( lua_State *L, int ind );
64
65/* Useful stuff. */
66void audio_clone( LuaAudio_t *la, const LuaAudio_t *source );
67void audio_cleanup( LuaAudio_t *la );
LuaAudio_t * lua_toaudio(lua_State *L, int ind)
Gets audio at index.
Definition: nlua_audio.c:324
LuaAudio_t * lua_pushaudio(lua_State *L, LuaAudio_t audio)
Pushes a audio on the stack.
Definition: nlua_audio.c:349
int lua_isaudio(lua_State *L, int ind)
Checks to see if ind is a audio.
Definition: nlua_audio.c:364
LuaAudio_t * luaL_checkaudio(lua_State *L, int ind)
Gets audio at index or raises error if there is no audio at index.
Definition: nlua_audio.c:335
int nlua_loadAudio(nlua_env env)
Loads the audio library.
Definition: nlua_audio.c:311
LuaBuffer_t * buf
Definition: nlua_audio.h:39
OggVorbis_File stream
Definition: nlua_audio.h:43
SDL_Thread * th
Definition: nlua_audio.h:50
SDL_mutex * lock
Definition: nlua_audio.h:41
int nocleanup
Definition: nlua_audio.h:34
ALfloat rg_max_scale
Definition: nlua_audio.h:47
ALuint slot
Definition: nlua_audio.h:36
LuaAudioType_t type
Definition: nlua_audio.h:33
double volume
Definition: nlua_audio.h:37
SDL_cond * cond
Definition: nlua_audio.h:51
ALenum format
Definition: nlua_audio.h:45
ALuint source
Definition: nlua_audio.h:35
vorbis_info * info
Definition: nlua_audio.h:44
ALfloat rg_scale_factor
Definition: nlua_audio.h:46
int active
Definition: nlua_audio.h:49
ALuint buffer
Definition: nlua_audio.h:25
int refcount
Definition: nlua_audio.h:26