41#include <StormByte/buffer/consumer.hxx>
42#include <StormByte/clonable.hxx>
43#include <StormByte/logger/log.hxx>
117 public StormByte::Clonable<TrackSettled, std::unique_ptr<TrackSettled>> {
168 inline PointerType
Clone()
const override {
169 return MakePointer<TrackSettled>(*
this);
176 inline PointerType
Move()
override {
177 return MakePointer<TrackSettled>(std::move(*
this));
196 std::optional<std::string>
Tune;
398 template<typename FilterType, typename... Args>
400 m_owner->AttachFilter(m_slot,
401 std::make_shared<FilterType>(std::forward<Args>(args)...));
432 Transcoder(std::shared_ptr<StormByte::Logger::Log> logger,
File&& file)
noexcept;
490 const std::filesystem::path& source,
491 const std::filesystem::path& destination,
492 std::optional<std::chrono::nanoseconds> duration = std::nullopt) noexcept;
525 inline const std::shared_ptr<class
Plan>&
Plan() const noexcept {
592 template<typename FilterType, typename... Args>
594 static_assert(std::is_base_of_v<Filter::Analytics, FilterType>,
595 "Track filters attach on Track::Filter");
596 AttachAnalytics(std::make_shared<FilterType>(std::forward<Args>(args)...));
660 std::optional<std::
string>
Error() const noexcept;
685 std::vector<std::pair<std::
string,
Filter::Report>>
Reports() const noexcept;
691 explicit operator
bool() const noexcept;
733 std::filesystem::path destination)
const noexcept;
795 virtual
void OnError(const std::
string& message) noexcept;
810 void Fail(std::
string reason) noexcept;
827 Track AddTrack(
int in,
Type kind) noexcept;
834 void MarkSettled(
int in,
Encoder& encoder) noexcept;
841 bool ValidSlot(std::
size_t slot) const noexcept;
848 void AttachFilter(std::
size_t slot, std::shared_ptr<
Filter::
FFmpeg> filter) noexcept;
854 void AttachAnalytics(std::shared_ptr<
Filter::
FFmpeg> filter) noexcept;
858 std::unique_ptr<
File> m_file;
859 std::shared_ptr<class
Plan> m_plan;
Frame and packet steps attached to a job or a raw pipeline.
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition visibility.h:47