aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Audio
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-09-07 00:27:46 +0800
committerchai <chaifix@163.com>2018-09-07 00:27:46 +0800
commit5e4a2c8fa58f30a93506c1db21aa7a9921c0affc (patch)
tree644837c30568296c311eb68b199048ad5f3b8a83 /src/libjin/Audio
parentd395ac00770e1dad6f9a2ba98ef23b8b719d0d16 (diff)
*format source code
Diffstat (limited to 'src/libjin/Audio')
-rw-r--r--src/libjin/Audio/Audio.h4
-rw-r--r--src/libjin/Audio/SDL/SDLAudio.h11
-rw-r--r--src/libjin/Audio/SDL/SDLSource.h25
-rw-r--r--src/libjin/Audio/Source.h4
4 files changed, 11 insertions, 33 deletions
diff --git a/src/libjin/Audio/Audio.h b/src/libjin/Audio/Audio.h
index 255f88b..674020e 100644
--- a/src/libjin/Audio/Audio.h
+++ b/src/libjin/Audio/Audio.h
@@ -18,9 +18,7 @@ namespace audio
template<class SubAudio>
class Audio : public Subsystem<SubAudio>
{
-
public:
-
enum State
{
PLAY ,
@@ -35,7 +33,6 @@ namespace audio
virtual void setVolume(float volume) = 0;
protected:
-
Audio()
: volume(1)
, state(State::PLAY)
@@ -45,6 +42,7 @@ namespace audio
float volume;
State state;
+
};
} // audio
diff --git a/src/libjin/Audio/SDL/SDLAudio.h b/src/libjin/Audio/SDL/SDLAudio.h
index a8067ba..b43dcfe 100644
--- a/src/libjin/Audio/SDL/SDLAudio.h
+++ b/src/libjin/Audio/SDL/SDLAudio.h
@@ -18,9 +18,7 @@ namespace audio
class SDLAudio : public Audio<SDLAudio>
{
-
public:
-
struct Setting : SettingBase
{
public:
@@ -34,23 +32,20 @@ namespace audio
void pause() override;
void resume() override;
void setVolume(float volume) override;
-
/* process functions*/
void processCommands();
void processSources(void* buffer, size_t len);
void processBuffer(void* buffer, size_t len);
bool goOnProcess();
-
+ /* thread-safe */
void lock();
void unlock();
private:
-
+ SINGLETON(SDLAudio);
SDLAudio() {};
~SDLAudio() {};
-
- SINGLETON(SDLAudio);
-
+ /* subsystem interface */
bool initSystem(const SettingBase* setting) override;
void quitSystem() override;
diff --git a/src/libjin/Audio/SDL/SDLSource.h b/src/libjin/Audio/SDL/SDLSource.h
index c45d7e5..a99f65e 100644
--- a/src/libjin/Audio/SDL/SDLSource.h
+++ b/src/libjin/Audio/SDL/SDLSource.h
@@ -20,14 +20,11 @@ namespace audio
class SDLSource : public Source
{
-
public:
-
- ~SDLSource();
-
static SDLSource* createSource(const char* file);
static SDLSource* createSource(void* mem, size_t size);
+ ~SDLSource();
/* ISource interface */
void play() override;
void stop() override;
@@ -37,25 +34,22 @@ namespace audio
bool isStopped() const override;
bool isPaused() const override;
void setPitch(float pitch) override;
- // Ͻ
void setVolume(float volume) override;
bool setLoop(bool loop) override;
void setRate(float rate) override;
-
+ /* handle and process anduio clip */
inline void handle(SDLSourceManager* manager, SDLSourceCommand* cmd);
inline void process(void* buffer, size_t size);
protected:
-
SDLSource();
-
+ /* decode raw audio data */
void decode_wav(void* mem, int size);
void decode_ogg(void* mem, int size);
-
+ /* check state */
inline bool is(int state) const { return (status.state & state) == state; }
- struct
- {
+ struct{
const void* data; // Ƶ
int length; // dataֽڳ
const void* end; // dataβ = (unsigned char*)data + size
@@ -64,10 +58,8 @@ namespace audio
int samples; // sample = size / (bitdepth / 8)
unsigned char channels; // channel1(mono)2(stereo)
} raw;
-
/* Procedure controller variable */
- struct
- {
+ struct{
int pos; // ǰŵsample
int pitch; // pitch
int state; // ǰ״̬
@@ -79,15 +71,13 @@ namespace audio
class SDLSourceManager
{
-
public:
-
static SDLSourceManager* get();
/* Process function */
void processCommands();
void processSources(void* buffer, size_t size);
-
+ /* control flow */
void removeAllSource();
void removeSource(SDLSource* source);
void pushSource(SDLSource* source);
@@ -95,7 +85,6 @@ namespace audio
void pushCommand(SDLSourceCommand* cmd);
private :
-
std::queue<SDLSourceCommand*> commands;
std::stack<SDLSourceCommand*> commandsPool;
std::vector<SDLSource*> sources; // processing sources
diff --git a/src/libjin/Audio/Source.h b/src/libjin/Audio/Source.h
index 70d6fae..b8cfb83 100644
--- a/src/libjin/Audio/Source.h
+++ b/src/libjin/Audio/Source.h
@@ -19,12 +19,9 @@ namespace audio
class Source
{
-
public:
-
Source() {};
virtual ~Source() {};
-
/* interface */
virtual void play() = 0;
virtual void stop() = 0;
@@ -39,7 +36,6 @@ namespace audio
virtual void setRate(float rate) = 0;
protected:
-
static SourceType getType(const void* mem, int size);
};