naev 0.11.5
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 int ok;
34 LuaAudioType_t type;
36 ALuint source;
37 ALuint slot;
38 double volume;
39 /* When not streaming. */
41 /* When streaming. */
42 SDL_mutex *lock;
44 OggVorbis_File stream;
45 vorbis_info *info;
46 ALenum format;
48 ALfloat rg_max_scale;
49 ALuint stream_buffers[2];
50 int active;
51 SDL_Thread *th;
52 SDL_cond *cond;
54
55/*
56 * Library loading
57 */
58int nlua_loadAudio( nlua_env env );
59
60/* Basic operations. */
61LuaAudio_t* lua_toaudio( lua_State *L, int ind );
62LuaAudio_t* luaL_checkaudio( lua_State *L, int ind );
63LuaAudio_t* lua_pushaudio( lua_State *L, LuaAudio_t audio );
64int lua_isaudio( lua_State *L, int ind );
65
66/* Useful stuff. */
67void audio_clone( LuaAudio_t *la, const LuaAudio_t *source );
68void 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:40
OggVorbis_File stream
Definition nlua_audio.h:44
SDL_Thread * th
Definition nlua_audio.h:51
SDL_mutex * lock
Definition nlua_audio.h:42
int nocleanup
Definition nlua_audio.h:35
ALfloat rg_max_scale
Definition nlua_audio.h:48
ALuint slot
Definition nlua_audio.h:37
LuaAudioType_t type
Definition nlua_audio.h:34
double volume
Definition nlua_audio.h:38
SDL_cond * cond
Definition nlua_audio.h:52
ALenum format
Definition nlua_audio.h:46
ALuint source
Definition nlua_audio.h:36
vorbis_info * info
Definition nlua_audio.h:45
ALfloat rg_scale_factor
Definition nlua_audio.h:47
ALuint buffer
Definition nlua_audio.h:25