Fix creating audio track from util::blob

This commit is contained in:
Nikita Lisitsa 2023-10-02 17:25:48 +03:00
parent 424ed06ecb
commit 8be3544295
2 changed files with 13 additions and 0 deletions

View file

@ -2,6 +2,7 @@
#include <psemek/audio/stream.hpp>
#include <psemek/util/span.hpp>
#include <psemek/util/blob.hpp>
#include <optional>
#include <vector>
@ -26,6 +27,7 @@ namespace psemek::audio
track_ptr load_wav(std::vector<char> const & data);
track_ptr load_mp3(util::span<char const> data);
track_ptr load_mp3(util::blob data);
track_ptr load_mp3(std::vector<char> data);
}

View file

@ -16,6 +16,7 @@ namespace psemek::audio
struct mp3_data_holder
{
std::vector<char> storage;
util::blob blob_storage;
util::span<char const> data;
mp3_data_holder(std::vector<char> 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<char const> data)
: data(data)
{}
@ -135,6 +141,11 @@ namespace psemek::audio
return std::make_shared<mp3_track_impl>(std::make_shared<mp3_data_holder>(data));
}
track_ptr load_mp3(util::blob data)
{
return std::make_shared<mp3_track_impl>(std::make_shared<mp3_data_holder>(std::move(data)));
}
track_ptr load_mp3(std::vector<char> data)
{
return std::make_shared<mp3_track_impl>(std::make_shared<mp3_data_holder>(std::move(data)));