mirror of https://github.com/bjornbytes/lovr.git
AudioStream;
This commit is contained in:
parent
fa630b6414
commit
0cad6271dd
|
@ -18,6 +18,7 @@ int l_lovrTimerInit(lua_State* L);
|
||||||
|
|
||||||
extern const luaL_Reg lovrAnimator[];
|
extern const luaL_Reg lovrAnimator[];
|
||||||
extern const luaL_Reg lovrAudio[];
|
extern const luaL_Reg lovrAudio[];
|
||||||
|
extern const luaL_Reg lovrAudioStream[];
|
||||||
extern const luaL_Reg lovrBallJoint[];
|
extern const luaL_Reg lovrBallJoint[];
|
||||||
extern const luaL_Reg lovrBlob[];
|
extern const luaL_Reg lovrBlob[];
|
||||||
extern const luaL_Reg lovrBoxShape[];
|
extern const luaL_Reg lovrBoxShape[];
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
#include "api.h"
|
#include "api.h"
|
||||||
#include "data/data.h"
|
#include "data/data.h"
|
||||||
|
#include "data/texture.h"
|
||||||
|
#include "data/audioStream.h"
|
||||||
|
|
||||||
int l_lovrDataInit(lua_State* L) {
|
int l_lovrDataInit(lua_State* L) {
|
||||||
lua_newtable(L);
|
lua_newtable(L);
|
||||||
luaL_register(L, NULL, lovrData);
|
luaL_register(L, NULL, lovrData);
|
||||||
luax_registertype(L, "TextureData", lovrTextureData);
|
luax_registertype(L, "TextureData", lovrTextureData);
|
||||||
|
luax_registertype(L, "AudioStream", lovrAudioStream);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +20,18 @@ int l_lovrDataNewTextureData(lua_State* L) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int l_lovrDataNewAudioStream(lua_State* L) {
|
||||||
|
Blob* blob = luax_readblob(L, 1, "Sound");
|
||||||
|
size_t bufferSize = luaL_optinteger(L, 2, 4096);
|
||||||
|
AudioStream* stream = lovrAudioStreamCreate(blob, bufferSize);
|
||||||
|
lovrRelease(&blob->ref);
|
||||||
|
lovrRelease(&stream->ref);
|
||||||
|
luax_pushtype(L, AudioStream, stream);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
const luaL_Reg lovrData[] = {
|
const luaL_Reg lovrData[] = {
|
||||||
|
{ "newAudioStream", l_lovrDataNewAudioStream },
|
||||||
{ "newTextureData", l_lovrDataNewTextureData },
|
{ "newTextureData", l_lovrDataNewTextureData },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
#include "api.h"
|
||||||
|
#include "data/audioStream.h"
|
||||||
|
|
||||||
|
int l_lovrAudioStreamGetBitDepth(lua_State* L) {
|
||||||
|
AudioStream* stream = luax_checktype(L, 1, AudioStream);
|
||||||
|
lua_pushinteger(L, stream->bitDepth);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int l_lovrAudioStreamGetChannelCount(lua_State* L) {
|
||||||
|
AudioStream* stream = luax_checktype(L, 1, AudioStream);
|
||||||
|
lua_pushinteger(L, stream->channelCount);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int l_lovrAudioStreamGetDuration(lua_State* L) {
|
||||||
|
AudioStream* stream = luax_checktype(L, 1, AudioStream);
|
||||||
|
lua_pushnumber(L, (float) stream->samples / stream->sampleRate);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int l_lovrAudioStreamGetSampleRate(lua_State* L) {
|
||||||
|
AudioStream* stream = luax_checktype(L, 1, AudioStream);
|
||||||
|
lua_pushinteger(L, stream->sampleRate);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int l_lovrAudioStreamSeek(lua_State* L) {
|
||||||
|
AudioStream* stream = luax_checktype(L, 1, AudioStream);
|
||||||
|
float seconds = luaL_checknumber(L, 2);
|
||||||
|
lovrAudioStreamSeek(stream, (int) (seconds * stream->sampleRate + .5));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const luaL_Reg lovrAudioStream[] = {
|
||||||
|
{ "getBitDepth", l_lovrAudioStreamGetBitDepth },
|
||||||
|
{ "getChannelCount", l_lovrAudioStreamGetChannelCount },
|
||||||
|
{ "getDuration", l_lovrAudioStreamGetDuration },
|
||||||
|
{ "getSampleRate", l_lovrAudioStreamGetSampleRate },
|
||||||
|
{ "seek", l_lovrAudioStreamSeek },
|
||||||
|
{ NULL, NULL }
|
||||||
|
};
|
Loading…
Reference in New Issue