Add audio::record helper function
This commit is contained in:
parent
a279fbfcb8
commit
5e93208fcb
2 changed files with 19 additions and 0 deletions
|
|
@ -1,7 +1,9 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <psemek/audio/stream.hpp>
|
#include <psemek/audio/stream.hpp>
|
||||||
|
#include <psemek/audio/track.hpp>
|
||||||
#include <psemek/audio/channel.hpp>
|
#include <psemek/audio/channel.hpp>
|
||||||
|
#include <psemek/audio/duration.hpp>
|
||||||
#include <psemek/util/span.hpp>
|
#include <psemek/util/span.hpp>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
@ -25,4 +27,7 @@ namespace psemek::audio
|
||||||
std::shared_ptr<recorder> make_recorder();
|
std::shared_ptr<recorder> make_recorder();
|
||||||
std::shared_ptr<recorder> make_recorder(stream_ptr stream);
|
std::shared_ptr<recorder> make_recorder(stream_ptr stream);
|
||||||
|
|
||||||
|
std::shared_ptr<track> record(stream_ptr stream);
|
||||||
|
std::shared_ptr<track> record(stream_ptr stream, duration duration);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,4 +75,18 @@ namespace psemek::audio
|
||||||
return recorder;
|
return recorder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<track> record(stream_ptr stream)
|
||||||
|
{
|
||||||
|
if (!stream->length())
|
||||||
|
throw std::runtime_error("cannot record an infinite stream");
|
||||||
|
return record(stream, *stream->length());
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<track> record(stream_ptr stream, duration duration)
|
||||||
|
{
|
||||||
|
auto recorder = make_recorder(std::move(stream));
|
||||||
|
recorder->request(duration.samples());
|
||||||
|
return load_raw(recorder->grab_buffer());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue