TDME2  1.9.200
AudioStream.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <array>
4 #include <memory>
5 #include <string>
6 
7 #include <tdme/tdme.h>
8 #include <tdme/audio/fwd-tdme.h>
11 
12 using std::array;
13 using std::string;
14 using std::unique_ptr;
15 
18 
19 /**
20  * Audio stream
21  * @author Andreas Drewke
22  */
24  : public AudioEntity
25 {
26  friend class Audio;
27 
28 private:
29  bool initiated { false };
30  array<uint32_t, 2> alBufferIds { 0, 0 };
31  uint32_t alSourceId { 0 };
32  uint32_t sampleRate { 0 };
33  uint8_t channels { 0 };
34  unique_ptr<ByteBuffer> data;
35  int32_t format { 0 };
36  bool playing { false };
37 
38 protected:
39  // forbid class copy
41 
42  /**
43  * Protected constructor
44  * @param id id
45  */
46  inline AudioStream(const string& id): AudioEntity(id) {
47  //
48  }
49 
50  /**
51  * Destructor
52  */
53  inline virtual ~AudioStream() {}
54 
55  // overridden methods
56  virtual bool initialize() override;
57  virtual void update() override;
58  virtual void dispose() override;
59 
60  /**
61  * Fill buffer
62  * @param data data
63  */
64  virtual void fillBuffer(ByteBuffer* data) = 0;
65 
66 public:
67  /**
68  * Set audio initialization parameters
69  * @param sampleRate sample rate
70  * @param channels channels
71  * @param bufferSize buffer size
72  */
73  virtual void setParameters(uint32_t sampleRate, uint8_t channels, const int64_t bufferSize = 32768);
74 
75  // overridden methods
76  virtual bool isPlaying() override;
77  virtual void rewind() override;
78  virtual void play() override;
79  virtual void pause() override;
80  virtual void stop() override;
81 
82 private:
83  /**
84  * @return having buffers that are currently played
85  */
86  bool isPlayingBuffers();
87 
88  /**
89  * Updates properties to Open AL
90  */
91  void updateProperties();
92 
93 };
Audio entity base class.
Definition: AudioEntity.h:19
virtual void play() override
Plays this audio entity.
Definition: AudioStream.cpp:56
virtual void rewind() override
Rewinds this audio entity.
Definition: AudioStream.cpp:52
virtual void dispose() override
Dispose this entity from OpenAL.
void updateProperties()
Updates properties to Open AL.
virtual void update() override
Commits properties to OpenAl.
virtual bool initialize() override
Initiates this OpenAL entity to OpenAl.
virtual bool isPlaying() override
Definition: AudioStream.cpp:47
array< uint32_t, 2 > alBufferIds
Definition: AudioStream.h:30
virtual void fillBuffer(ByteBuffer *data)=0
Fill buffer.
virtual ~AudioStream()
Destructor.
Definition: AudioStream.h:53
unique_ptr< ByteBuffer > data
Definition: AudioStream.h:34
virtual void stop() override
Stops this audio entity.
virtual void setParameters(uint32_t sampleRate, uint8_t channels, const int64_t bufferSize=32768)
Set audio initialization parameters.
Definition: AudioStream.cpp:35
virtual void pause() override
Pauses this audio entity.
Definition: AudioStream.cpp:94
Interface to audio module.
Definition: Audio.h:29
Byte buffer class.
Definition: ByteBuffer.h:27
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6