Support creating a loop directly from a track

This commit is contained in:
Nikita Lisitsa 2023-01-06 20:09:21 +03:00
parent 0d23d8bcab
commit ef95af60ae
2 changed files with 8 additions and 1 deletions

View file

@ -1,10 +1,12 @@
#pragma once
#include <psemek/audio/stream.hpp>
#include <psemek/audio/track.hpp>
namespace psemek::audio
{
stream_ptr loop(track_ptr track, std::optional<std::size_t> count = {});
stream_ptr loop(stream_ptr stream, std::optional<std::size_t> count = {});
}

View file

@ -54,11 +54,16 @@ namespace psemek::audio
}
stream_ptr loop(track_ptr track, std::optional<std::size_t> count)
{
return std::make_shared<loop_impl>(track, count);
}
stream_ptr loop(stream_ptr stream, std::optional<std::size_t> count)
{
if (!stream->length())
return stream;
return std::make_shared<loop_impl>(make_duplicator(std::move(stream)), count);
return loop(make_duplicator(std::move(stream)), count);
}
}