StormByte C++ Library: Multimedia module 0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
StormByte::Multimedia Namespace Reference

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

Namespaces

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

Classes

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

class __declspec (dllimport) Attachment
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

◆ CodecRefs

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

List of codec references.

◆ ContainerRefs

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

List of container references.

◆ ExpectedCodec

Result of FindCodec.

◆ ExpectedContainer

Result of FindContainer.

◆ ExpectedFile

Result of OpenFile.

◆ ExpectedTranscoder

Result of Transcoder::Open.

◆ Streams

using StormByte::Multimedia::Streams = 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

◆ __declspec()

class StormByte::Multimedia::__declspec ( dllimport )

Builds an attachment.

Parameters
fileNameSource file name, if known.
mimeTypeMIME type, if known.
payloadFile bytes.

Copy constructor (deleted).

Move constructor.

Destructor.

Copy assignment (deleted).

Returns
*this.

Move assignment.

Returns
*this.

Original file name.

Returns
Name, or empty.

MIME type.

Returns
Type, or empty.

Attachment bytes.

Returns
FIFO.

< File name

< MIME type

< Bytes

◆ ToString() [1/2]

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]

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