add PCMStream:create_sound method
This commit is contained in:
@@ -44,9 +44,35 @@ static int l_share(lua::State* L) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int l_create_sound(lua::State* L) {
|
||||
auto stream = touserdata<LuaPCMStream>(L, 1);
|
||||
if (stream == nullptr) {
|
||||
return 0;
|
||||
}
|
||||
auto alias = require_lstring(L, 2);
|
||||
auto memoryStream = stream->getStream();
|
||||
|
||||
std::vector<char> buffer(memoryStream->available());
|
||||
memoryStream->readFully(buffer.data(), buffer.size(), true);
|
||||
|
||||
auto pcm = std::make_shared<PCM>(
|
||||
std::move(buffer),
|
||||
0,
|
||||
memoryStream->getChannels(),
|
||||
static_cast<uint8_t>(memoryStream->getBitsPerSample()),
|
||||
memoryStream->getSampleRate(),
|
||||
memoryStream->isSeekable()
|
||||
);
|
||||
auto sound = audio::create_sound(std::move(pcm), true);
|
||||
auto assets = engine->getAssets();
|
||||
assets->store<audio::Sound>(std::move(sound), std::string(alias));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static std::unordered_map<std::string, lua_CFunction> methods {
|
||||
{"feed", lua::wrap<l_feed>},
|
||||
{"share", lua::wrap<l_share>},
|
||||
{"create_sound", lua::wrap<l_create_sound>},
|
||||
};
|
||||
|
||||
static int l_meta_meta_call(lua::State* L) {
|
||||
|
||||
Reference in New Issue
Block a user