From a729db25e033f955852306617dad48933c743fc5 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Wed, 1 Jul 2015 21:03:26 +0200 Subject: [PATCH] [DEV] rework ESS ==> better interfaces --- audio/ess/ess.cpp | 33 +++++++++++++++++++++++- audio/ess/ess.h | 11 ++++++++ audio/ess/music.cpp | 62 +++++++++++++++++++++++++-------------------- audio/ess/music.h | 42 +++++++++++++++++++----------- 4 files changed, 104 insertions(+), 44 deletions(-) diff --git a/audio/ess/ess.cpp b/audio/ess/ess.cpp index 66bdaa2..993164f 100644 --- a/audio/ess/ess.cpp +++ b/audio/ess/ess.cpp @@ -58,7 +58,7 @@ class OutputInterface { const audio::Time& _playTime, const size_t& _nbChunk, enum audio::format _format, - uint32_t _frequency, + uint32_t _sampleRate, const std::vector& _map) { if (_format != audio::format_int16) { EWOLSA_ERROR("call wrong type ... (need int16_t)"); @@ -79,4 +79,35 @@ void audio::ess::unInit() { g_ioInterface.reset(); } +void audio::ess::loadSoundSet(const std::string& _data) { + +} + +void audio::ess::loadSoundSet(const etk::FSNode& _file) { + +} + +void audio::ess::musicPlay(const std::string& _name) { + +} + +void audio::ess::musicStop() { + +} + +void audio::ess::musicVolume(float _dB) { + +} + +int32_t audio::ess::effectGetId(const std::string& _name) { + return -1; +} + +void audio::ess::effectPlay(int32_t _name, const vec2& _pos=vec2(0,0)) { + +} + +void audio::ess::effectPlay(const std::string& _name, const vec2& _pos=vec2(0,0)) { + +} diff --git a/audio/ess/ess.h b/audio/ess/ess.h index 2ccaab2..b3105c0 100644 --- a/audio/ess/ess.h +++ b/audio/ess/ess.h @@ -18,6 +18,17 @@ namespace audio { namespace ess { void init(); void unInit(); + + void loadSoundSet(const std::string& _data); + void loadSoundSet(const etk::FSNode& _file); + + void musicPlay(const std::string& _name); + void musicStop(); + void musicVolume(float _dB); + + int32_t effectGetId(const std::string& _name); + void effectPlay(int32_t _name, const vec2& _pos=vec2(0,0)); + void effectPlay(const std::string& _name, const vec2& _pos=vec2(0,0)); } } diff --git a/audio/ess/music.cpp b/audio/ess/music.cpp index 7825b29..c1dac8d 100644 --- a/audio/ess/music.cpp +++ b/audio/ess/music.cpp @@ -26,38 +26,44 @@ static std::vector musicListRead; static int32_t musicCurrentRead = -1; static int32_t musicNextRead = -1; -void audio::ess::music::init() { - audio::ess::music::volumeSet(0); - audio::ess::music::muteSet(false); - std::unique_lock lck(localMutex); - musicCurrentRead = -1; - musicNextRead = -1; - musicPositionReading = 0; - for (size_t iii=0; iii& _manager) : + m_manager(_manager), + m_position(0) { + std::unique_lock lock(m_mutex); + //Set stereo output: + std::vector channelMap; + channelMap.push_back(audio::channel_frontLeft); + channelMap.push_back(audio::channel_frontRight); + m_interface = m_manager->createOutput(48000, + channelMap, + audio::format_int16, + "speaker"); + if (m_interface == nullptr) { + EWOLSA_ERROR("can not allocate output interface ... "); + return; } - musicListRead.clear(); + m_interface->setName("audio::ess::music"); + m_interface->addVolumeGroup("MUSIC"); + // set callback mode ... + m_interface->setOutputCallback(std::bind(&audio::ess::Music::onDataNeeded, + this, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3, + std::placeholders::_4, + std::placeholders::_5, + std::placeholders::_6)); } -void audio::ess::music::unInit() { - audio::ess::music::volumeSet(-1000); - audio::ess::music::muteSet(true); - std::unique_lock lck(localMutex); - musicCurrentRead = -1; - musicNextRead = -1; - musicPositionReading = 0; - for (size_t iii=0; iii +#include