StormByte C++ Library: Multimedia module
0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
lib
public
StormByte
multimedia
feature.hxx
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2024-2026 David C. Manuelda (StormBytePP)
3
*
4
* This file is part of StormByte-Multimedia.
5
*
6
* StormByte-Multimedia original source is dual-licensed:
7
*
8
* 1. GNU Lesser General Public License v3.0 (or later)
9
* You may redistribute and/or modify this file under the terms of the
10
* GNU Lesser General Public License as published by the Free Software
11
* Foundation, either version 3 of the License, or (at your option)
12
* any later version.
13
*
14
* 2. Commercial license
15
* Alternatively, this file may be used under the terms of a commercial
16
* license agreement with the copyright holder
17
* (David C. Manuelda <StormByte@gmail.com>).
18
*
19
* Both licenses apply only to original StormByte-Multimedia source in this
20
* file. Third-party components — including FFmpeg and embedded trained data —
21
* remain under their own licenses and are not covered by the commercial grant.
22
*
23
* Neither license grants any patent rights. Any patent licenses required
24
* to use this software or third-party components must be obtained separately
25
* from the patent holders.
26
*
27
* StormByte-Multimedia is distributed in the hope that it will be useful,
28
* but WITHOUT ANY WARRANTY; without even the implied warranty of
29
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30
* GNU Lesser General Public License for more details.
31
*
32
* You should have received a copy of the GNU Lesser General Public License
33
* version 3 along with StormByte-Multimedia. If not, see
34
* <https://www.gnu.org/licenses/lgpl-3.0.html>.
35
*
36
* SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-StormByte-Commercial
37
*/
38
39
#pragma once
40
41
#include <cstdint>
42
47
namespace
StormByte::Multimedia
{
58
enum class
Feature
: std::uint32_t {
59
None
= 0,
60
61
MultiThreaded
= 1u << 0,
62
RealTime
= 1u << 1,
63
LowDelay
= 1u << 2,
64
ZeroCopy
= 1u << 3,
65
HardwareAcceleration
= 1u << 4,
66
67
HighQuality
= 1u << 5,
68
PsychoVisual
= 1u << 6,
69
AdaptiveQuantization
= 1u << 7,
70
Lookahead
= 1u << 8,
71
TwoPass
= 1u << 9,
72
Lossless
= 1u << 10,
73
ProfileBased
= 1u << 11,
74
ContentTuning
= 1u << 12,
75
76
TenBit
= 1u << 13,
77
TwelveBit
= 1u << 14,
78
HDR10
= 1u << 15,
79
HDR10Plus
= 1u << 16,
80
WideGamut
= 1u << 17,
81
SurroundSound
= 1u << 18,
82
SideData
= 1u << 19,
83
84
BFrames
= 1u << 20,
85
IntraOnly
= 1u << 21,
86
Interlaced
= 1u << 22,
87
Slices
= 1u << 23,
88
89
Streamable
= 1u << 24,
90
Encodeable
= 1u << 25
91
};
92
98
constexpr
const
char
*
ToString
(
Feature
feature)
noexcept
{
99
switch
(feature) {
100
case
Feature::None
:
return
"None"
;
101
case
Feature::MultiThreaded
:
return
"MultiThreaded"
;
102
case
Feature::RealTime
:
return
"RealTime"
;
103
case
Feature::LowDelay
:
return
"LowDelay"
;
104
case
Feature::ZeroCopy
:
return
"ZeroCopy"
;
105
case
Feature::HardwareAcceleration
:
return
"HardwareAcceleration"
;
106
case
Feature::HighQuality
:
return
"HighQuality"
;
107
case
Feature::PsychoVisual
:
return
"PsychoVisual"
;
108
case
Feature::AdaptiveQuantization
:
return
"AdaptiveQuantization"
;
109
case
Feature::Lookahead
:
return
"Lookahead"
;
110
case
Feature::TwoPass
:
return
"TwoPass"
;
111
case
Feature::Lossless
:
return
"Lossless"
;
112
case
Feature::ProfileBased
:
return
"ProfileBased"
;
113
case
Feature::ContentTuning
:
return
"ContentTuning"
;
114
case
Feature::TenBit
:
return
"TenBit"
;
115
case
Feature::TwelveBit
:
return
"TwelveBit"
;
116
case
Feature::HDR10
:
return
"HDR10"
;
117
case
Feature::HDR10Plus
:
return
"HDR10Plus"
;
118
case
Feature::WideGamut
:
return
"WideGamut"
;
119
case
Feature::SurroundSound
:
return
"SurroundSound"
;
120
case
Feature::SideData
:
return
"SideData"
;
121
case
Feature::BFrames
:
return
"BFrames"
;
122
case
Feature::IntraOnly
:
return
"IntraOnly"
;
123
case
Feature::Interlaced
:
return
"Interlaced"
;
124
case
Feature::Slices
:
return
"Slices"
;
125
case
Feature::Streamable
:
return
"Streamable"
;
126
case
Feature::Encodeable
:
return
"Encodeable"
;
127
}
128
return
"UnknownFeature"
;
129
}
130
}
StormByte::Multimedia
Public multimedia types: codecs, containers, streams and files.
StormByte::Multimedia::ToString
constexpr const char * ToString(Feature feature) noexcept
Converts a Feature to a stable token.
Definition
feature.hxx:98
StormByte::Multimedia::Feature
Feature
Handcrafted capability of one decoder or encoder implementation.
Definition
feature.hxx:58
StormByte::Multimedia::Feature::Encodeable
@ Encodeable
Can encode (legacy; Write is Codec::HasAccess)
StormByte::Multimedia::Feature::HighQuality
@ HighQuality
High quality presets.
StormByte::Multimedia::Feature::ContentTuning
@ ContentTuning
Content-type tuning.
StormByte::Multimedia::Feature::Interlaced
@ Interlaced
Interlaced.
StormByte::Multimedia::Feature::TenBit
@ TenBit
10-bit
StormByte::Multimedia::Feature::HDR10Plus
@ HDR10Plus
Dynamic HDR10+ side data on the frame.
StormByte::Multimedia::Feature::LowDelay
@ LowDelay
Low latency.
StormByte::Multimedia::Feature::TwelveBit
@ TwelveBit
12-bit
StormByte::Multimedia::Feature::BFrames
@ BFrames
B-frames.
StormByte::Multimedia::Feature::IntraOnly
@ IntraOnly
Intra-only.
StormByte::Multimedia::Feature::None
@ None
StormByte::Multimedia::Feature::WideGamut
@ WideGamut
Wide color gamut.
StormByte::Multimedia::Feature::AdaptiveQuantization
@ AdaptiveQuantization
Adaptive quantization.
StormByte::Multimedia::Feature::Streamable
@ Streamable
Streamable output.
StormByte::Multimedia::Feature::PsychoVisual
@ PsychoVisual
Psycho-visual tuning.
StormByte::Multimedia::Feature::HardwareAcceleration
@ HardwareAcceleration
HW decode or encode.
StormByte::Multimedia::Feature::Lookahead
@ Lookahead
Lookahead analysis.
StormByte::Multimedia::Feature::Lossless
@ Lossless
Lossless mode.
StormByte::Multimedia::Feature::TwoPass
@ TwoPass
Two-pass encoding.
StormByte::Multimedia::Feature::MultiThreaded
@ MultiThreaded
Frame or slice threading.
StormByte::Multimedia::Feature::ProfileBased
@ ProfileBased
Profile selection.
StormByte::Multimedia::Feature::ZeroCopy
@ ZeroCopy
Zero-copy paths.
StormByte::Multimedia::Feature::SideData
@ SideData
Propagates packet or frame side data.
StormByte::Multimedia::Feature::RealTime
@ RealTime
Suitable for real-time use.
StormByte::Multimedia::Feature::HDR10
@ HDR10
Static HDR10 metadata on the frame.
StormByte::Multimedia::Feature::Slices
@ Slices
Slice coding.
StormByte::Multimedia::Feature::SurroundSound
@ SurroundSound
Surround layouts.
Generated by
1.9.8