StormByte C++ Library: Multimedia module 0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Enumerations | Functions
StormByte::Multimedia Namespace Reference

Public multimedia types: codecs, containers, streams and files. More...

Namespaces

namespace  Backend
 
namespace  Detail
 
namespace  FFmpeg
 Private RAII wrappers over libav*.
 
 
namespace  OCR
 
namespace  Pipeline
 Demux / decode / filter / encode / mux types.
 
namespace  Property
 Media property value types.
 
namespace  Tables
 

Classes

class  Access
 Bitmask of Operation flags for a codec. More...
 
class  Attachment
 Container attachment (cover, fonts). More...
 
class  Codec
 Immutable codec identity owned by Registry. More...
 
class  CodecNotFoundException
 Thrown when Registry::FindCodec does not resolve a key. More...
 
class  Container
 Immutable container identity owned by StormByte::Multimedia::Registry. More...
 
class  ContainerNotFoundException
 Thrown when Registry::FindContainer does not resolve a key. More...
 
class  Exception
 Base exception for the Multimedia module. More...
 
class  Features
 Bitmask of Feature flags. More...
 
class  File
 Snapshot of a media source: path or Consumer, container, streams and tags. More...
 
class  FileBufferOpenException
 Thrown when File::Open fails on a Consumer. More...
 
class  FileOpenException
 Thrown when File::Open fails (path or buffer). More...
 
class  FilePathOpenException
 Thrown when File::Open fails on a filesystem path. More...
 
class  Registry
 Process-wide catalog of codecs and containers. More...
 
class  Stream
 Public media stream snapshot. More...
 
class  TranscodeException
 Thrown when Transcode::Open or a configuration call fails. More...
 

Typedefs

using Attachments = std::vector< Attachment >
 
using ExpectedCodec = StormByte::Expected< const Codec &, CodecNotFoundException >
 Result of FindCodec.
 
using ExpectedContainer = StormByte::Expected< const Container &, ContainerNotFoundException >
 Result of FindContainer.
 
using ExpectedFile = StormByte::Expected< File, FileOpenException >
 Result of OpenFile.
 
using ExpectedTranscoder = StormByte::Expected< std::unique_ptr< Pipeline::Transcoder >, TranscodeException >
 Result of Transcoder::Open.
 
using CodecRefs = std::vector< std::reference_wrapper< const Codec > >
 List of codec references.
 
using ContainerRefs = std::vector< std::reference_wrapper< const Container > >
 List of container references.
 
using Streams = std::vector< Stream >
 Ordered streams.
 

Enumerations

enum class  Feature : std::uint32_t {
  None = 0 , MultiThreaded = 1u << 0 , RealTime = 1u << 1 , LowDelay = 1u << 2 ,
  ZeroCopy = 1u << 3 , HardwareAcceleration = 1u << 4 , HighQuality = 1u << 5 , PsychoVisual = 1u << 6 ,
  AdaptiveQuantization = 1u << 7 , Lookahead = 1u << 8 , TwoPass = 1u << 9 , Lossless = 1u << 10 ,
  ProfileBased = 1u << 11 , ContentTuning = 1u << 12 , TenBit = 1u << 13 , TwelveBit = 1u << 14 ,
  HDR10 = 1u << 15 , HDR10Plus = 1u << 16 , WideGamut = 1u << 17 , SurroundSound = 1u << 18 ,
  SideData = 1u << 19 , BFrames = 1u << 20 , IntraOnly = 1u << 21 , Interlaced = 1u << 22 ,
  Slices = 1u << 23 , Streamable = 1u << 24 , Encodeable = 1u << 25
}
 Handcrafted capability of one decoder or encoder implementation. More...
 
enum class  Type {
  Audio , Video , Subtitle , Attachment ,
  Unknown
}
 Kind of media stream or codec. More...
 
enum class  Operation : std::uint8_t { None = 0 , Read = 1 << 0 , Write = 1 << 1 , Attach = 1 << 2 }
 Read / write capability flags for a codec. More...
 

Functions

constexpr const char * ToString (Feature feature) noexcept
 Converts a Feature to a stable token.
 
constexpr const char * ToString (Type type) noexcept
 Converts a Type to a string literal.
 

Detailed Description

Public multimedia types: codecs, containers, streams and files.

Public Multimedia module.

Public media types: codecs, containers, registry and stream kinds.

Public media types: codecs, registry and stream kinds.

Typedef Documentation

◆ Attachments

using StormByte::Multimedia::Attachments = typedef std::vector<Attachment>

◆ CodecRefs

using StormByte::Multimedia::CodecRefs = typedef std::vector<std::reference_wrapper<const Codec> >

List of codec references.

◆ ContainerRefs

using StormByte::Multimedia::ContainerRefs = typedef std::vector<std::reference_wrapper<const Container> >

List of container references.

◆ ExpectedCodec

using StormByte::Multimedia::ExpectedCodec = typedef StormByte::Expected<const Codec&, CodecNotFoundException>

Result of FindCodec.

◆ ExpectedContainer

Result of FindContainer.

◆ ExpectedFile

using StormByte::Multimedia::ExpectedFile = typedef StormByte::Expected<File, FileOpenException>

Result of OpenFile.

◆ ExpectedTranscoder

using StormByte::Multimedia::ExpectedTranscoder = typedef StormByte::Expected<std::unique_ptr<Pipeline::Transcoder>, TranscodeException>

Result of Transcoder::Open.

◆ Streams

using StormByte::Multimedia::Streams = typedef std::vector<Stream>

Ordered streams.

Enumeration Type Documentation

◆ Feature

enum class StormByte::Multimedia::Feature : std::uint32_t
strong

Handcrafted capability of one decoder or encoder implementation.

Preference is not a Feature; it lives on the table row. Bits must be disjoint: Has() is a real bitmask test. HDR10 / HDR10Plus / SideData mean the implementation surfaces that metadata on Pipeline::Frame (decode) or writes it (encode). Missing bits against source metadata is a failbit, never a silent drop.

Enumerator
None 
MultiThreaded 

Frame or slice threading.

RealTime 

Suitable for real-time use.

LowDelay 

Low latency.

ZeroCopy 

Zero-copy paths.

HardwareAcceleration 

HW decode or encode.

HighQuality 

High quality presets.

PsychoVisual 

Psycho-visual tuning.

AdaptiveQuantization 

Adaptive quantization.

Lookahead 

Lookahead analysis.

TwoPass 

Two-pass encoding.

Lossless 

Lossless mode.

ProfileBased 

Profile selection.

ContentTuning 

Content-type tuning.

TenBit 

10-bit

TwelveBit 

12-bit

HDR10 

Static HDR10 metadata on the frame.

HDR10Plus 

Dynamic HDR10+ side data on the frame.

WideGamut 

Wide color gamut.

SurroundSound 

Surround layouts.

SideData 

Propagates packet or frame side data.

BFrames 

B-frames.

IntraOnly 

Intra-only.

Interlaced 

Interlaced.

Slices 

Slice coding.

Streamable 

Streamable output.

Encodeable 

Can encode (legacy; Write is Codec::HasAccess)

◆ Operation

enum class StormByte::Multimedia::Operation : std::uint8_t
strong

Read / write capability flags for a codec.

Enumerator
None 

No access.

Read 

Decode / demux is available.

Write 

At least one encoder / muxer exists.

Attach 

Container can hold real attachments (covers, fonts)

◆ Type

enum class StormByte::Multimedia::Type
strong

Kind of media stream or codec.

Enumerator
Audio 

Audio stream or codec.

Video 

Video stream or codec.

Subtitle 

Subtitle stream or codec.

Attachment 

Attachment / ancillary data.

Unknown 

Unclassified type.

Function Documentation

◆ ToString() [1/2]

constexpr const char * StormByte::Multimedia::ToString ( Feature  feature)
constexprnoexcept

Converts a Feature to a stable token.

Parameters
featureFeature value.
Returns
Literal. Unknown bits return "UnknownFeature".

◆ ToString() [2/2]

constexpr const char * StormByte::Multimedia::ToString ( Type  type)
constexprnoexcept

Converts a Type to a string literal.

Parameters
typeValue to convert.
Returns
Null-terminated name, or "Invalid".

< Audio

< Video

< Subtitle

< Attachment

< Unknown

< Out of range