41#include <StormByte/buffer/consumer.hxx>
42#include <StormByte/clonable.hxx>
43#include <StormByte/logger/log.hxx>
116 public StormByte::Clonable<TrackSettled, std::unique_ptr<TrackSettled>> {
167 inline PointerType Clone()
const override {
168 return MakePointer<TrackSettled>(*
this);
175 inline PointerType
Move()
override {
176 return MakePointer<TrackSettled>(std::move(*
this));
195 std::optional<std::string>
Tune;
325 Track& Implementation(std::
string name) noexcept;
339 Track& BitRate(std::int64_t bits_per_second) noexcept;
346 Track& MaxBitRate(std::int64_t bits_per_second) noexcept;
353 Track& Preset(std::
string name) noexcept;
360 Track& Tune(std::
string name) noexcept;
367 Track& FineTune(std::map<std::
string, std::
string> options) noexcept;
374 Track& Language(std::
string language) noexcept;
381 Track& Title(std::
string title) noexcept;
394 template<typename FilterType, typename... Args>
396 m_owner->AttachFilter(m_slot,
397 std::make_shared<FilterType>(std::forward<Args>(args)...));
428 Transcoder(std::shared_ptr<StormByte::Logger::Log> logger,
File&& file)
noexcept;
486 const std::filesystem::path& source,
487 const std::filesystem::path& destination,
488 std::optional<std::chrono::nanoseconds> duration = std::nullopt) noexcept;
505 const
File& Source() const noexcept;
515 const std::shared_ptr<
StormByte::Logger::Log>& Logger() const noexcept;
521 inline const std::shared_ptr<class
Plan>&
Plan() const noexcept {
588 template<typename FilterType, typename... Args>
590 static_assert(std::is_base_of_v<Filter::Analytics, FilterType>,
591 "Track filters attach on Track::Filter");
592 AttachAnalytics(std::make_shared<FilterType>(std::forward<Args>(args)...));
628 void Cancel() noexcept;
633 void Pause() noexcept;
638 void Resume() noexcept;
650 bool Failed() const noexcept;
656 std::optional<std::
string> Error() const noexcept;
662 std::optional<
unsigned> Progress() const noexcept;
677 std::vector<std::pair<std::
string,
Filter::Report>> Reports() const noexcept;
683 explicit operator
bool() const noexcept;
700 virtual
void InstallLog() noexcept;
709 inline const std::shared_ptr<
StormByte::Logger::Log>& ApplicationLog() const noexcept {
725 std::filesystem::path destination)
const noexcept;
739 virtual
void OnConfigure() noexcept;
751 virtual
void OnPlan(const class
Plan& plan) noexcept;
763 virtual
void OnProgress(
unsigned percent) noexcept;
768 virtual
void OnDone() noexcept;
774 virtual
void OnError(const std::
string& message) noexcept;
779 virtual
void OnAborted() noexcept;
789 void Fail(std::
string reason) noexcept;
806 Track AddTrack(
int in,
Type kind) noexcept;
813 void MarkSettled(
int in,
Encoder& encoder) noexcept;
819 void SetProgress(
unsigned percent) noexcept;
826 bool ValidSlot(std::
size_t slot) const noexcept;
833 void AttachFilter(std::
size_t slot, std::shared_ptr<
Filter::FFmpeg> filter) noexcept;
839 void AttachAnalytics(std::shared_ptr<
Filter::FFmpeg> filter) noexcept;
841 std::shared_ptr<
StormByte::Logger::Log> m_app_log;
842 std::shared_ptr<
StormByte::Logger::Log> m_logger;
843 std::unique_ptr<
File> m_file;
844 std::shared_ptr<class
Plan> m_plan;
845 std::unique_ptr<Backend::Pipeline::
Transcoder> m_backend;
Frame and packet steps attached to a job or a raw pipeline.
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition visibility.h:47