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