41#include <StormByte/bitmask.hxx>
42#include <StormByte/logger/log.hxx>
95 using Bitmask::Bitmask;
142 friend class Backend::Pipeline::Decoder;
143 friend class Backend::Pipeline::Detail::Worker::Decode;
163 explicit Decoder(std::shared_ptr<StormByte::Logger::Log> log,
201 explicit operator
bool() const noexcept;
216 inline
int Index() const noexcept {
248 inline const std::optional<std::string>&
Language() const noexcept {
256 inline const std::optional<std::string>&
Title() const noexcept {
274 return m_implementation;
296 m_require = features;
304 return m_capabilities;
316 struct EncodeLook {};
328 struct SourceLook {};
341 Decoder(std::shared_ptr<StormByte::Logger::Log> log,
342 int track, EncodeLook tag)
noexcept;
354 Decoder(std::shared_ptr<StormByte::Logger::Log> log,
355 int track, RemuxLook tag)
noexcept;
367 Decoder(std::shared_ptr<StormByte::Logger::Log> log,
368 int track, SourceLook tag)
noexcept;
378 std::string Label() const noexcept override;
384 void Bind(std::unique_ptr<Backend::Pipeline::Decoder> backend) noexcept;
390 std::unique_ptr<Backend::Pipeline::Decoder> OpenOrigin() noexcept;
397 void Stamp(std::optional<std::
string> language, std::optional<std::
string> title) noexcept;
403 void AttachOrigin(Demuxer& demuxer) noexcept;
410 void Attach(Frame& frame, std::unique_ptr<Backend::Pipeline::Frame> backend) noexcept;
417 void CloseCue(Frame& frame, Property::Duration duration) noexcept;
423 void StampLineage(Frame& frame) noexcept;
430 bool OpenLook(const Packet& packet) noexcept;
440 void StampLook(Frame& frame) noexcept;
442 static constexpr std::
size_t Ceiling = 32;
444 DecoderFlags m_flags;
445 std::optional<std::
string> m_language;
446 std::optional<std::
string> m_title;
447 std::optional<std::
string> m_implementation;
449 Features m_capabilities;
450 Demuxer* m_origin =
nullptr;
451 std::unique_ptr<Backend::Pipeline::Decoder> m_backend;
452 std::optional<std::uint64_t> m_serial;
453 std::uint64_t m_part;
454 std::optional<Property::Duration> m_inDts;
456 std::optional<Producer> m_lookStamp;
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition visibility.h:47