diff --git a/libs/audio/include/psemek/audio/track.hpp b/libs/audio/include/psemek/audio/track.hpp index d371f2b1..fcaa0720 100644 --- a/libs/audio/include/psemek/audio/track.hpp +++ b/libs/audio/include/psemek/audio/track.hpp @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -26,6 +27,7 @@ namespace psemek::audio track_ptr load_wav(std::vector const & data); track_ptr load_mp3(util::span data); + track_ptr load_mp3(util::blob data); track_ptr load_mp3(std::vector data); } diff --git a/libs/audio/source/track_mp3.cpp b/libs/audio/source/track_mp3.cpp index da458094..3a2bbea6 100644 --- a/libs/audio/source/track_mp3.cpp +++ b/libs/audio/source/track_mp3.cpp @@ -16,6 +16,7 @@ namespace psemek::audio struct mp3_data_holder { std::vector storage; + util::blob blob_storage; util::span data; mp3_data_holder(std::vector storage) @@ -23,6 +24,11 @@ namespace psemek::audio , data(this->storage) {} + mp3_data_holder(util::blob data) + : blob_storage(data) + , data(blob_storage.span()) + {} + mp3_data_holder(util::span data) : data(data) {} @@ -135,6 +141,11 @@ namespace psemek::audio return std::make_shared(std::make_shared(data)); } + track_ptr load_mp3(util::blob data) + { + return std::make_shared(std::make_shared(std::move(data))); + } + track_ptr load_mp3(std::vector data) { return std::make_shared(std::make_shared(std::move(data)));