| #ifdef WITH_RIVE_AUDIO | |
| #ifndef _RIVE_AUDIO_SOURCE_HPP_ | |
| #define _RIVE_AUDIO_SOURCE_HPP_ | |
| #include "rive/refcnt.hpp" | |
| #include "rive/span.hpp" | |
| #include "rive/simple_array.hpp" | |
| #include "rive/audio/audio_format.hpp" | |
| namespace rive | |
| { | |
| class AudioEngine; | |
| class AudioReader; | |
| class AudioSound; | |
| class AudioSource : public RefCnt<AudioSource> | |
| { | |
| public: | |
| // Makes an audio source that does not own it's backing bytes. | |
| AudioSource(rive::Span<uint8_t> fileBytes); | |
| // Makes an audio source whose backing bytes will be deleted when the | |
| // AudioSource deletes. | |
| AudioSource(rive::SimpleArray<uint8_t> fileBytes); | |
| // Makes a buffered audio source whose backing bytes will be deleted when | |
| // the AudioSource deletes. | |
| AudioSource(rive::Span<float> samples, uint32_t numChannels, uint32_t sampleRate); | |
| rcp<AudioReader> makeReader(uint32_t numChannels, uint32_t sampleRate); | |
| uint32_t channels(); | |
| uint32_t sampleRate(); | |
| AudioFormat format() const; | |
| const rive::Span<uint8_t> bytes() const { return m_fileBytes; } | |
| const rive::Span<float> bufferedSamples() const; | |
| bool isBuffered() const { return m_isBuffered; } | |
| private: | |
| bool m_isBuffered; | |
| uint32_t m_channels; | |
| uint32_t m_sampleRate; | |
| rive::Span<uint8_t> m_fileBytes; | |
| rive::SimpleArray<uint8_t> m_ownedBytes; | |
| }; | |
| } // namespace rive | |
| #endif | |
| #endif |