| #ifdef WITH_RIVE_AUDIO |
| #ifndef _RIVE_AUDIO_READER_HPP_ |
| #define _RIVE_AUDIO_READER_HPP_ |
| |
| #include "miniaudio.h" |
| #include "rive/refcnt.hpp" |
| #include "rive/span.hpp" |
| #include <vector> |
| |
| namespace rive |
| { |
| class AudioSource; |
| class AudioReader : public RefCnt<AudioReader> |
| { |
| friend class AudioSource; |
| |
| public: |
| uint64_t lengthInFrames(); |
| Span<float> read(uint64_t frameCount); |
| ~AudioReader(); |
| uint32_t channels() const; |
| uint32_t sampleRate() const; |
| |
| private: |
| AudioReader(rcp<AudioSource> audioSource, uint32_t channels); |
| ma_decoder* decoder(); |
| |
| rcp<AudioSource> m_source; |
| uint32_t m_channels; |
| ma_decoder m_decoder; |
| std::vector<float> m_readBuffer; |
| }; |
| |
| } // namespace rive |
| |
| #endif |
| #endif |