41#include <StormByte/buffer/fifo.hxx>
42#include <StormByte/logger/log.hxx>
104 friend class Backend::Pipeline::Encoder;
105 friend class Backend::Pipeline::Detail::Worker::Encode;
120 Encoder(std::shared_ptr<StormByte::Logger::Log> log,
121 int output_index,
const Codec& codec)
noexcept;
167 explicit operator
bool() const noexcept;
173 inline
int Index() const noexcept {
203 std::optional<
int> AudioChannels() const noexcept;
209 std::optional<
int> AudioSampleRate() const noexcept;
215 std::optional<
int> AudioFrameSize() const noexcept;
221 std::optional<
int> AudioSampleFormat() const noexcept;
236 inline const std::
string& EncoderTag() const noexcept {
254 return m_implementation;
276 m_require = features;
284 return m_capabilities;
300 inline void CRF(
int value)
noexcept {
308 inline const std::optional<int>&
CRF() const noexcept {
316 inline void BitRate(std::int64_t bits_per_second)
noexcept {
317 m_bitRate = bits_per_second;
324 inline const std::optional<std::int64_t>&
BitRate() const noexcept {
332 inline void MaxBitRate(std::int64_t bits_per_second)
noexcept {
333 m_maxBitRate = bits_per_second;
340 inline const std::optional<std::int64_t>&
MaxBitRate() const noexcept {
354 inline const std::optional<std::string>&
Preset() const noexcept {
362 void Tune(std::string name)
noexcept;
368 inline const std::optional<std::string>&
Tune() const noexcept {
385 inline const std::map<std::string, std::string>&
FineTune() const noexcept {
393 inline void FineTune(std::map<std::string, std::string> options)
noexcept {
394 m_fineTune = std::move(options);
414 std::string Label() const noexcept override;
442 std::optional<Property::Duration> pts,
443 std::optional<Property::Duration> dts,
444 std::optional<Property::Duration> duration,
447 std::unique_ptr<Backend::Pipeline::
Packet> backend) noexcept;
454 bool MuxBindStream(
void* avStream) noexcept;
461 void* FrameHandle(
Frame& frame) noexcept;
468 const
void* FrameHandle(const
Frame& frame) noexcept;
474 void Emit(
Packet::PointerType packet) noexcept;
476 static constexpr std::
size_t Ceiling = 64;
478 const
Codec* m_codec;
479 std::
string m_encoderTag;
480 std::optional<std::
string> m_implementation;
483 std::optional<
int> m_crf;
484 std::optional<std::int64_t> m_bitRate;
485 std::optional<std::int64_t> m_maxBitRate;
486 std::optional<std::
string> m_preset;
487 std::optional<std::
string> m_tune;
488 std::map<std::
string, std::
string> m_fineTune;
489 std::unique_ptr<Backend::Pipeline::
Encoder> m_backend;
490 std::optional<std::uint64_t> m_serial;
491 std::uint64_t m_part;
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition visibility.h:47