41#include <StormByte/bitmask.hxx>
42#include <StormByte/logger/log.hxx>
98 using Bitmask::Bitmask;
151 friend class Backend::Pipeline::Decoder;
152 friend class Backend::Pipeline::Detail::Worker::Decode;
173 explicit Decoder(std::shared_ptr<StormByte::Logger::Log> log,
211 explicit operator
bool() const noexcept;
256 inline const std::optional<std::string>&
Language() const noexcept {
264 inline const std::optional<std::string>&
Title() const noexcept {
282 return m_implementation;
304 m_require = features;
312 return m_capabilities;
324 struct EncodeLook {};
336 struct SourceLook {};
349 Decoder(std::shared_ptr<StormByte::Logger::Log> log,
350 int track, EncodeLook tag)
noexcept;
362 Decoder(std::shared_ptr<StormByte::Logger::Log> log,
363 int track, RemuxLook tag)
noexcept;
375 Decoder(std::shared_ptr<StormByte::Logger::Log> log,
376 int track, SourceLook tag)
noexcept;
386 std::string Label() const noexcept override;
392 void Bind(std::unique_ptr<Backend::Pipeline::Decoder> backend) noexcept;
398 std::unique_ptr<Backend::Pipeline::Decoder> OpenOrigin() noexcept;
405 void Stamp(std::optional<std::
string> language, std::optional<std::
string> title) noexcept;
411 void AttachOrigin(Demuxer& demuxer) noexcept;
420 void MeasureSourceClosed() noexcept;
429 void DrainMeasure() noexcept;
438 bool ResetAfterMeasure() noexcept;
445 void Attach(Frame& frame, std::unique_ptr<Backend::Pipeline::Frame> backend) noexcept;
452 void CloseCue(Frame& frame, Property::Duration duration) noexcept;
458 void StampLineage(Frame& frame) noexcept;
465 bool OpenLook(const Packet& packet) noexcept;
477 void StampLook(Frame& frame) noexcept;
486 void BindAnalytics(Filters& filters) noexcept;
491 bool WakeNow() const noexcept override;
496 void AfterWait() noexcept override;
499 DecoderFlags m_flags;
500 std::optional<std::
string> m_language;
501 std::optional<std::
string> m_title;
502 std::optional<std::
string> m_implementation;
504 Features m_capabilities;
505 Demuxer* m_origin =
nullptr;
506 Filters* m_analytics =
nullptr;
507 std::unique_ptr<Backend::Pipeline::Decoder> m_backend;
508 std::optional<std::uint64_t> m_serial;
509 std::uint64_t m_part;
510 std::optional<Property::Duration> m_inDts;
512 std::optional<Producer> m_lookStamp;
513 std::atomic<
bool> m_measureClosed{
false};
514 std::atomic<bool> m_measureDrained{
false};
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition visibility.h:47