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 #pragma once
#include <psemek/audio/stream.hpp> #include <psemek/audio/stream.hpp>
#include <psemek/audio/track.hpp>
namespace psemek::audio 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 = {}); 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) stream_ptr loop(stream_ptr stream, std::optional<std::size_t> count)
{ {
if (!stream->length()) if (!stream->length())
return stream; return stream;
return std::make_shared<loop_impl>(make_duplicator(std::move(stream)), count); return loop(make_duplicator(std::move(stream)), count);
} }
} }