add out of band audio support ios - abstracted audio!

Follow up to #7048!

I nuked the custom defines and the miniaudio include. I think this fixes the need for miniaudio and the custom defines @mjtalbot! Give it a shot 🔫

Diffs=
89053041a add out of band audio support ios - abstracted audio! (#7079)

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
diff --git a/.rive_head b/.rive_head
index efc3ff2..584b93d 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-99d28e1ac65672076b08f3a044218ec60268c4ae
+89053041aea1e6c8559afc4273c4e466e9ff547a
diff --git a/cg_renderer/premake5.lua b/cg_renderer/premake5.lua
index d54c7e5..a4a6062 100644
--- a/cg_renderer/premake5.lua
+++ b/cg_renderer/premake5.lua
@@ -43,11 +43,4 @@
             })
         end
     end
-
-    filter({ 'options:with_rive_text' })
-    do
-        defines({ 'WITH_RIVE_TEXT' })
-    end
 end
-
-newoption({ trigger = 'with_rive_text', description = 'Enables text experiments' })
diff --git a/include/rive/assets/audio_asset.hpp b/include/rive/assets/audio_asset.hpp
index c4f042f..bc8d89a 100644
--- a/include/rive/assets/audio_asset.hpp
+++ b/include/rive/assets/audio_asset.hpp
@@ -14,7 +14,6 @@
     bool decode(SimpleArray<uint8_t>&, Factory*) override;
     std::string fileExtension() const override;
 
-#ifdef WITH_RIVE_AUDIO
 #ifdef TESTING
     bool hasAudioSource() { return m_audioSource != nullptr; }
 #endif
@@ -25,7 +24,6 @@
 
 private:
     rcp<AudioSource> m_audioSource;
-#endif
 };
 } // namespace rive
 
diff --git a/include/rive/assets/file_asset.hpp b/include/rive/assets/file_asset.hpp
index a8ed721..22915f4 100644
--- a/include/rive/assets/file_asset.hpp
+++ b/include/rive/assets/file_asset.hpp
@@ -50,6 +50,7 @@
         }
     }
 
+    std::string uniqueName() const;
     std::string uniqueFilename() const;
 };
 } // namespace rive
diff --git a/include/rive/audio/audio_format.hpp b/include/rive/audio/audio_format.hpp
index ab73fe5..330dffe 100644
--- a/include/rive/audio/audio_format.hpp
+++ b/include/rive/audio/audio_format.hpp
@@ -1,4 +1,3 @@
-#ifdef WITH_RIVE_AUDIO
 #ifndef _RIVE_AUDIO_FORMAT_HPP_
 #define _RIVE_AUDIO_FORMAT_HPP_
 namespace rive
@@ -13,5 +12,4 @@
     buffered
 };
 }
-#endif
 #endif
\ No newline at end of file
diff --git a/include/rive/audio/audio_source.hpp b/include/rive/audio/audio_source.hpp
index b38984b..d6153a3 100644
--- a/include/rive/audio/audio_source.hpp
+++ b/include/rive/audio/audio_source.hpp
@@ -1,4 +1,3 @@
-#ifdef WITH_RIVE_AUDIO
 #ifndef _RIVE_AUDIO_SOURCE_HPP_
 #define _RIVE_AUDIO_SOURCE_HPP_
 
@@ -26,24 +25,41 @@
     // the AudioSource deletes.
     AudioSource(rive::Span<float> samples, uint32_t numChannels, uint32_t sampleRate);
 
+#ifdef WITH_RIVE_AUDIO
     rcp<AudioReader> makeReader(uint32_t numChannels, uint32_t sampleRate);
+#endif
 
     uint32_t channels();
     uint32_t sampleRate();
     AudioFormat format() const;
-    const rive::Span<uint8_t> bytes() const { return m_fileBytes; }
+    const rive::Span<uint8_t> bytes() const
+    {
+#ifdef WITH_RIVE_AUDIO
+        return m_fileBytes;
+#else
+        return rive::Span<uint8_t>(nullptr, 0);
+#endif
+    }
 
     const rive::Span<float> bufferedSamples() const;
-    bool isBuffered() const { return m_isBuffered; }
+    bool isBuffered() const
+    {
+#ifdef WITH_RIVE_AUDIO
+        return m_isBuffered;
+#else
+        return false;
+#endif
+    }
 
 private:
+#ifdef WITH_RIVE_AUDIO
     bool m_isBuffered;
     uint32_t m_channels;
     uint32_t m_sampleRate;
     rive::Span<uint8_t> m_fileBytes;
     rive::SimpleArray<uint8_t> m_ownedBytes;
+#endif
 };
 } // namespace rive
 
-#endif
 #endif
\ No newline at end of file
diff --git a/include/rive/factory.hpp b/include/rive/factory.hpp
index 1484c0f..417d4ef 100644
--- a/include/rive/factory.hpp
+++ b/include/rive/factory.hpp
@@ -7,6 +7,7 @@
 
 #include "rive/renderer.hpp"
 #include "rive/text_engine.hpp"
+#include "rive/audio/audio_source.hpp"
 #include "rive/refcnt.hpp"
 #include "rive/span.hpp"
 #include "rive/math/aabb.hpp"
@@ -58,6 +59,8 @@
 
     virtual rcp<Font> decodeFont(Span<const uint8_t>);
 
+    virtual rcp<AudioSource> decodeAudio(Span<const uint8_t>);
+
     // Non-virtual helpers
 
     rcp<RenderPath> makeRenderPath(const AABB&);
diff --git a/src/assets/file_asset.cpp b/src/assets/file_asset.cpp
index e6205ee..03a8766 100644
--- a/src/assets/file_asset.cpp
+++ b/src/assets/file_asset.cpp
@@ -20,19 +20,21 @@
     return Super::import(importStack);
 }
 
-std::string FileAsset::uniqueFilename() const
+std::string FileAsset::uniqueName() const
 {
     // remove final extension
-    std::string uniqueFilename = name();
-    std::size_t finalDot = uniqueFilename.rfind('.');
+    std::string uniqueName = name();
+    std::size_t finalDot = uniqueName.rfind('.');
 
     if (finalDot != std::string::npos)
     {
-        uniqueFilename = uniqueFilename.substr(0, finalDot);
+        uniqueName = uniqueName.substr(0, finalDot);
     }
-    return uniqueFilename + "-" + std::to_string(assetId()) + "." + fileExtension();
+    return uniqueName + "-" + std::to_string(assetId());
 }
 
+std::string FileAsset::uniqueFilename() const { return uniqueName() + "." + fileExtension(); }
+
 void FileAsset::copyCdnUuid(const FileAssetBase& object)
 {
     // Should never be called.
diff --git a/src/audio/audio_source.cpp b/src/audio/audio_source.cpp
index 8cc5b78..8701d9c 100644
--- a/src/audio/audio_source.cpp
+++ b/src/audio/audio_source.cpp
@@ -1,12 +1,14 @@
-#ifdef WITH_RIVE_AUDIO
 #include "rive/audio/audio_source.hpp"
+#ifdef WITH_RIVE_AUDIO
 #include "rive/audio/audio_engine.hpp"
 #include "rive/audio/audio_sound.hpp"
 #include "rive/audio/audio_reader.hpp"
 #include "rive/audio/audio_reader.hpp"
+#endif
 
 using namespace rive;
 
+#ifdef WITH_RIVE_AUDIO
 AudioSource::AudioSource(rive::Span<float> samples, uint32_t numChannels, uint32_t sampleRate) :
     m_isBuffered(true),
     m_channels(numChannels),
@@ -146,5 +148,15 @@
 
     return reader;
 }
-
+#else
+AudioSource::AudioSource(rive::Span<uint8_t> fileBytes) {}
+AudioSource::AudioSource(rive::SimpleArray<uint8_t> fileBytes) {}
+AudioSource::AudioSource(rive::Span<float> samples, uint32_t numChannels, uint32_t sampleRate) {}
+uint32_t AudioSource::channels() { return 0; }
+uint32_t AudioSource::sampleRate() { return 0; }
+AudioFormat AudioSource::format() const { return AudioFormat::unknown; }
+const rive::Span<float> AudioSource::bufferedSamples() const
+{
+    return rive::Span<float>(nullptr, 0);
+}
 #endif
\ No newline at end of file
diff --git a/src/factory.cpp b/src/factory.cpp
index 00b89c1..07e352a 100644
--- a/src/factory.cpp
+++ b/src/factory.cpp
@@ -26,3 +26,12 @@
     return nullptr;
 #endif
 }
+
+rcp<AudioSource> Factory::decodeAudio(Span<const uint8_t> span)
+{
+#ifdef WITH_RIVE_AUDIO
+    return rcp<AudioSource>(new AudioSource(SimpleArray<uint8_t>(span.data(), span.size())));
+#else
+    return nullptr;
+#endif
+}