Guiliani  Version 2.5 revision 7293 (documentation build 13)
SndWrapWAVBase.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef __SNDWRAPWAVBASE_H__
11#define __SNDWRAPWAVBASE_H__
12
13#include "WaveLoader.h"
14#include "SndWrap.h"
15#include "eC_File.h"
16#include "GUIThread.h"
17
19
24{
25public:
26 virtual void LoadSnd(const eC_String &pkPath, const SoundResource_t &eID, eC_UInt uiDeviceID = 0);
27 virtual void UnloadSnd(const SoundResource_t &eID);
28 virtual eC_Bool SetVolume(eC_UByte ubVolume = 0xff) = 0;
29 virtual eC_UByte GetVolume() = 0;
30 virtual eC_Bool PauseSnd(const SoundResource_t &eID);
31 virtual eC_Bool PlaySnd(const SoundResource_t &eID, eC_UInt Flags = PLAY_ASYNC);
32 virtual eC_Bool ResumeSnd (const SoundResource_t &eID);
33 virtual eC_Bool StopSnd(const SoundResource_t &eID);
34
39 virtual eC_Bool IsSoundPlaying(const SoundResource_t &eID);
40
41protected:
44
47
51 class CSound
52 {
53 public:
54 CSound() : m_pubData(NULL), m_uiDataSize(0), m_eSoundID(SND_START_TAG) { memset(&m_kWaveformat, 0, sizeof(m_kWaveformat)); }
55
59 inline void SetWaveFormat(const FileLoader::WaveLoader::FormatChunk_t& kWaveFormat) { m_kWaveformat = kWaveFormat; }
60
64 inline const FileLoader::WaveLoader::FormatChunk_t& GetWaveFormat() const { return m_kWaveformat; }
65
70 inline void SetData(eC_UByte *data, eC_UInt datasize)
71 {
72 if (data)
73 {
74 if (m_pubData)
76 m_pubData = new eC_UByte[datasize];
77 memcpy(m_pubData, data, datasize);
78 m_uiDataSize = datasize;
79 }
80 }
81
85 inline eC_UByte* GetData() const { return m_pubData; }
86
90 inline eC_UInt GetDataSize() const
91 {
92 if (m_pubData)
93 return m_uiDataSize;
94 else
95 return 0;
96 }
97
100 inline void ReleaseData() { if (m_pubData) delete[] m_pubData; m_pubData = 0; }
101
105 inline void SetSoundID(const SoundResource_t eSoundID) {m_eSoundID = eSoundID;}
106
110 inline SoundResource_t GetSoundID() const {return m_eSoundID;}
111
112 private:
113 eC_UByte *m_pubData;
114 eC_UInt m_uiDataSize;
115 SoundResource_t m_eSoundID;
117 };
118
120
124 {
125 public:
130 CPlayThreadBase(const eC_UInt uiStackSize, const ThreadPriority_t kThreadPriority) :
131 CGUIThread(uiStackSize),
132 m_kThreadPriority(kThreadPriority)
133 {}
134
136 virtual ~CPlayThreadBase() {}
137
141 virtual void Play(const CSound& kSound) = 0;
142
144 virtual void Pause() = 0;
145
147 virtual void Resume() = 0;
148
150 virtual void Stop() = 0;
151
155 inline const CSound& GetSound() const {return m_kSound;}
156
160 inline const void SetSound(const CSound& kSound) {m_kSound = kSound;}
161
165 inline ThreadPriority_t GetThreadPriority() const {return m_kThreadPriority;}
166
167 private:
169 void Setup() {}
170
174 virtual void Execute(void *pArg) = 0;
175
177 void Cleanup() {}
178
182 eC_Int Start(void *pArg);
183
184 CSound m_kSound;
185 ThreadPriority_t m_kThreadPriority;
186 };
187
189 eC_TArray<CSound> m_aSoundFiles;
190
191private:
193 eC_Bool DeInit();
194
196 eC_Bool Init();
197
201 eC_Bool SetNOFSounds(eC_UInt uiNOFSounds);
202};
203#endif //#ifndef __SNDWRAPWAVBASE_H__
SoundResource_t
List of sound resource ids.
Definition: GUISoundResource.h:48
This is the base class for Guiliani threads.
Definition: GUIThread.h:85
This is the Sound-Wrapper base class.
Definition: SndWrap.h:48
This class handles the playing of sound files.
Definition: SndWrapWAVBase.h:124
ThreadPriority_t GetThreadPriority() const
Definition: SndWrapWAVBase.h:165
CPlayThreadBase(const eC_UInt uiStackSize, const ThreadPriority_t kThreadPriority)
Definition: SndWrapWAVBase.h:130
const void SetSound(const CSound &kSound)
Definition: SndWrapWAVBase.h:160
const CSound & GetSound() const
Definition: SndWrapWAVBase.h:155
virtual ~CPlayThreadBase()
Destructor.
Definition: SndWrapWAVBase.h:136
virtual void Play(const CSound &kSound)=0
This class represents a sound file with filepointer, WAVE header and Sound Resource ID.
Definition: SndWrapWAVBase.h:52
eC_UByte * GetData() const
Definition: SndWrapWAVBase.h:85
SoundResource_t GetSoundID() const
Definition: SndWrapWAVBase.h:110
const FileLoader::WaveLoader::FormatChunk_t & GetWaveFormat() const
Definition: SndWrapWAVBase.h:64
void SetData(eC_UByte *data, eC_UInt datasize)
Definition: SndWrapWAVBase.h:70
void SetWaveFormat(const FileLoader::WaveLoader::FormatChunk_t &kWaveFormat)
Definition: SndWrapWAVBase.h:59
eC_UInt GetDataSize() const
Definition: SndWrapWAVBase.h:90
void SetSoundID(const SoundResource_t eSoundID)
Definition: SndWrapWAVBase.h:105
void ReleaseData()
Definition: SndWrapWAVBase.h:100
This class is the base implementation for playing WAV files using low-level interfaces.
Definition: SndWrapWAVBase.h:24
virtual eC_Bool IsSoundPlaying(const SoundResource_t &eID)
virtual eC_Bool PlaySnd(const SoundResource_t &eID, eC_UInt Flags=PLAY_ASYNC)
virtual eC_Bool SetVolume(eC_UByte ubVolume=0xff)=0
virtual eC_Bool ResumeSnd(const SoundResource_t &eID)
virtual eC_UByte GetVolume()=0
virtual void LoadSnd(const eC_String &pkPath, const SoundResource_t &eID, eC_UInt uiDeviceID=0)
virtual eC_Bool StopSnd(const SoundResource_t &eID)
CSndWrapWAVBase()
Constructor.
virtual ~CSndWrapWAVBase()
Destructor.
virtual void UnloadSnd(const SoundResource_t &eID)
CPlayThreadBase * m_pPlayThread
The play thread.
Definition: SndWrapWAVBase.h:188
eC_TArray< CSound > m_aSoundFiles
The list of the loaded soundfiles.
Definition: SndWrapWAVBase.h:189
virtual eC_Bool PauseSnd(const SoundResource_t &eID)
Structure of format chunk of wave-file.
Definition: WaveLoader.h:24