41#include <StormByte/logger/log.hxx>
51#include <condition_variable>
229 friend class StormByte::Multimedia::Backend::Pipeline::Detail::Worker::Filter;
282 std::
string Name() const noexcept;
288 inline const std::
string& Leaf() const noexcept {
331 virtual
void Setup() noexcept = 0;
373 bool Failed() const noexcept;
379 const std::optional<std::
string>& Error() const noexcept;
385 virtual std::
size_t InputCeiling() const noexcept;
409 std::
string name, Pipeline::
Kinds receives, Pipeline::
Kinds produces) noexcept;
424 void Log(
StormByte::Logger::Level level, std::string_view message) noexcept;
430 void Fail(std::
string reason) noexcept;
443 void Hold(std::uint8_t n) noexcept;
452 void Release() noexcept;
458 bool Held() const noexcept;
464 std::uint8_t HeldFor() const noexcept;
473 virtual
void Eof() noexcept;
486 virtual
void LastChance(const Pipeline::
Frame& frame) noexcept;
492 virtual
void LastChance(const Pipeline::
Packet& packet) noexcept;
544 void Open() noexcept;
550 void Work(Pipeline::
Item::PointerType item) noexcept;
556 void Finish() noexcept;
561 void Park() noexcept;
566 void CallLastChance() noexcept;
571 void Emit(Pipeline::
Item::PointerType item) noexcept;
576 void Wait() noexcept;
581 void Launch() noexcept;
586 void Halt() noexcept;
591 void Stop() noexcept;
596 bool Stopping() const noexcept;
601 Backend::Pipeline::Host& Face() noexcept;
606 std::condition_variable& Wake() noexcept;
611 void CloseHoppers() noexcept;
617 void RecordWork(std::int64_t microseconds) noexcept;
622 void DumpWork() noexcept;
624 std::shared_ptr<
StormByte::Logger::Log> m_log;
626 Pipeline::
Kinds m_receives;
627 Pipeline::
Kinds m_produces;
630 std::condition_variable m_wake;
631 std::unique_ptr<Backend::Pipeline::Pipe> m_pipe;
638 Backend::Pipeline::Pipe& pipe() noexcept;
644 const Backend::Pipeline::Pipe& pipe() const noexcept;
646 std::unique_ptr<Surface> m_surface;
647 std::unique_ptr<Backend::Pipeline::Pumper> m_pumper;
649 std::optional<std::
string> m_error;
651 std::uint64_t m_workN;
652 std::int64_t m_workMin;
653 std::int64_t m_workMax;
654 std::int64_t m_lastWork;
655 Pipeline::
Item::PointerType m_current;
656 std::deque<Pipeline::
Item::PointerType> m_queue;
658 std::uint8_t m_heldFor;
719 Pipeline::
Kinds receives, Pipeline::
Kinds produces) noexcept;
773 Pipeline::
Kinds receives, Pipeline::
Kinds produces) noexcept;
848 Pipeline::
Kinds receives, Pipeline::
Kinds produces) noexcept;
866 void Hold(std::uint8_t n) noexcept = delete;
871 void Release() noexcept = delete;
876 bool Held() const noexcept = delete;
881 std::uint8_t HeldFor() const noexcept = delete;
887 void LastChance(const Pipeline::
Frame& frame) noexcept
override {
Frame and packet steps attached to a job or a raw pipeline.
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition visibility.h:47