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
property
pixel_format.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 <
StormByte/multimedia/visibility.h
>
42
43
#include <cstdint>
44
49
namespace
StormByte::Multimedia::Property
{
54
enum class
STORMBYTE_MULTIMEDIA_PUBLIC
PixelFormat
{
55
Unknown
,
56
YUV420P
,
57
YUV422P
,
58
YUV444P
,
59
YUV420P10
,
60
YUV422P10
,
61
YUV444P10
,
62
YUV420P12
,
63
YUV422P12
,
64
YUV444P12
,
65
NV12
,
66
NV21
,
67
P010
,
68
RGB24
,
69
BGR24
,
70
RGBA
,
71
BGRA
,
72
GRAY8
,
73
GRAY10
,
74
GRAY16
75
};
76
82
constexpr
const
char
*
ToString
(
PixelFormat
format)
noexcept
{
83
switch
(format) {
84
case
PixelFormat::Unknown
:
return
"Unknown"
;
85
case
PixelFormat::YUV420P
:
return
"YUV420P"
;
86
case
PixelFormat::YUV422P
:
return
"YUV422P"
;
87
case
PixelFormat::YUV444P
:
return
"YUV444P"
;
88
case
PixelFormat::YUV420P10
:
return
"YUV420P10"
;
89
case
PixelFormat::YUV422P10
:
return
"YUV422P10"
;
90
case
PixelFormat::YUV444P10
:
return
"YUV444P10"
;
91
case
PixelFormat::YUV420P12
:
return
"YUV420P12"
;
92
case
PixelFormat::YUV422P12
:
return
"YUV422P12"
;
93
case
PixelFormat::YUV444P12
:
return
"YUV444P12"
;
94
case
PixelFormat::NV12
:
return
"NV12"
;
95
case
PixelFormat::NV21
:
return
"NV21"
;
96
case
PixelFormat::P010
:
return
"P010"
;
97
case
PixelFormat::RGB24
:
return
"RGB24"
;
98
case
PixelFormat::BGR24
:
return
"BGR24"
;
99
case
PixelFormat::RGBA
:
return
"RGBA"
;
100
case
PixelFormat::BGRA
:
return
"BGRA"
;
101
case
PixelFormat::GRAY8
:
return
"GRAY8"
;
102
case
PixelFormat::GRAY10
:
return
"GRAY10"
;
103
case
PixelFormat::GRAY16
:
return
"GRAY16"
;
104
default
:
return
"Invalid"
;
105
}
106
}
107
113
constexpr
std::uint8_t
BitDepth
(
PixelFormat
format)
noexcept
{
114
switch
(format) {
115
case
PixelFormat::YUV420P
:
116
case
PixelFormat::YUV422P
:
117
case
PixelFormat::YUV444P
:
118
case
PixelFormat::NV12
:
119
case
PixelFormat::NV21
:
120
case
PixelFormat::RGB24
:
121
case
PixelFormat::BGR24
:
122
case
PixelFormat::RGBA
:
123
case
PixelFormat::BGRA
:
124
case
PixelFormat::GRAY8
:
125
return
8;
126
case
PixelFormat::YUV420P10
:
127
case
PixelFormat::YUV422P10
:
128
case
PixelFormat::YUV444P10
:
129
case
PixelFormat::P010
:
130
case
PixelFormat::GRAY10
:
131
return
10;
132
case
PixelFormat::YUV420P12
:
133
case
PixelFormat::YUV422P12
:
134
case
PixelFormat::YUV444P12
:
135
return
12;
136
case
PixelFormat::GRAY16
:
137
return
16;
138
default
:
139
return
0;
140
}
141
}
142
}
StormByte::Multimedia::Property
Media property value types.
StormByte::Multimedia::Property::ToString
constexpr const char * ToString(ChannelLayout layout) noexcept
Converts a ChannelLayout to a string.
Definition
channel_layout.hxx:74
StormByte::Multimedia::Property::ChannelLayout::Unknown
@ Unknown
Unlisted or missing.
StormByte::Multimedia::Property::BitDepth
constexpr std::uint8_t BitDepth(PixelFormat format) noexcept
Component bit depth of format.
Definition
pixel_format.hxx:113
StormByte::Multimedia::Property::PixelFormat
PixelFormat
Curated pixel formats.
Definition
pixel_format.hxx:54
StormByte::Multimedia::Property::PixelFormat::RGB24
@ RGB24
Packed RGB 8-bit.
StormByte::Multimedia::Property::PixelFormat::YUV444P10
@ YUV444P10
Planar YUV 4:4:4 10-bit.
StormByte::Multimedia::Property::PixelFormat::YUV444P
@ YUV444P
Planar YUV 4:4:4 8-bit.
StormByte::Multimedia::Property::PixelFormat::NV12
@ NV12
Semi-planar YUV 4:2:0 8-bit.
StormByte::Multimedia::Property::PixelFormat::YUV422P12
@ YUV422P12
Planar YUV 4:2:2 12-bit.
StormByte::Multimedia::Property::PixelFormat::GRAY16
@ GRAY16
Gray 16-bit.
StormByte::Multimedia::Property::PixelFormat::YUV422P10
@ YUV422P10
Planar YUV 4:2:2 10-bit.
StormByte::Multimedia::Property::PixelFormat::BGRA
@ BGRA
Packed BGRA 8-bit.
StormByte::Multimedia::Property::PixelFormat::GRAY10
@ GRAY10
Gray 10-bit.
StormByte::Multimedia::Property::PixelFormat::Unknown
@ Unknown
Unlisted or missing.
StormByte::Multimedia::Property::PixelFormat::NV21
@ NV21
Semi-planar YUV 4:2:0 8-bit (VU)
StormByte::Multimedia::Property::PixelFormat::GRAY8
@ GRAY8
Gray 8-bit.
StormByte::Multimedia::Property::PixelFormat::YUV420P10
@ YUV420P10
Planar YUV 4:2:0 10-bit.
StormByte::Multimedia::Property::PixelFormat::P010
@ P010
Semi-planar YUV 4:2:0 10-bit.
StormByte::Multimedia::Property::PixelFormat::YUV422P
@ YUV422P
Planar YUV 4:2:2 8-bit.
StormByte::Multimedia::Property::PixelFormat::RGBA
@ RGBA
Packed RGBA 8-bit.
StormByte::Multimedia::Property::PixelFormat::YUV444P12
@ YUV444P12
Planar YUV 4:4:4 12-bit.
StormByte::Multimedia::Property::PixelFormat::YUV420P
@ YUV420P
Planar YUV 4:2:0 8-bit.
StormByte::Multimedia::Property::PixelFormat::YUV420P12
@ YUV420P12
Planar YUV 4:2:0 12-bit.
StormByte::Multimedia::Property::PixelFormat::BGR24
@ BGR24
Packed BGR 8-bit.
visibility.h
STORMBYTE_MULTIMEDIA_PUBLIC
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition
visibility.h:47
Generated by
1.9.8