StormByte C++ Library: Multimedia module
0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
AVChannelLayout.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/ffmpeg/fwd.hxx
>
42
#include <
StormByte/multimedia/visibility.h
>
43
44
#include <cstdint>
45
#include <string>
46
51
namespace
StormByte::Multimedia::FFmpeg
{
52
struct
Convert
;
53
class
AVCodecParameters
;
54
class
AVDecoder
;
55
class
AVEncoder
;
56
class
AVFrame
;
57
class
Swr
;
58
66
class
STORMBYTE_MULTIMEDIA_PUBLIC
AVChannelLayout
{
67
friend
struct
Convert
;
68
friend
class
AVCodecParameters
;
69
friend
class
AVDecoder
;
70
friend
class
AVEncoder
;
71
friend
class
AVFrame
;
72
friend
class
Swr
;
73
public
:
77
AVChannelLayout
() noexcept;
78
83
explicit
AVChannelLayout
(
int
channels) noexcept;
84
89
AVChannelLayout
(const
AVChannelLayout
& other) noexcept;
90
95
AVChannelLayout
(
AVChannelLayout
&& other) noexcept;
96
100
~
AVChannelLayout
() noexcept;
101
107
AVChannelLayout
& operator=(const
AVChannelLayout
& other) noexcept;
108
114
AVChannelLayout
& operator=(
AVChannelLayout
&& other) noexcept;
115
121
static
AVChannelLayout
Default
(
int
channels) noexcept;
122
127
explicit operator
bool
() const noexcept;
128
133
int
NbChannels
() const noexcept;
134
139
std::uint64_t
Mask
() const noexcept;
140
145
int
Order
() const noexcept;
146
151
std::
string
Describe
() const noexcept;
152
158
bool
operator==(const
AVChannelLayout
& other) const noexcept;
159
165
bool
operator!=(const
AVChannelLayout
& other) const noexcept;
166
167
private:
168
::
AVChannelLayout
* m_raw =
nullptr
;
169
173
void
Ensure() noexcept;
174
178
void
Free() noexcept;
179
184
const ::
AVChannelLayout
* Get() const noexcept;
185
190
::
AVChannelLayout
* Get() noexcept;
191
};
192
}
StormByte::Multimedia::FFmpeg::AVChannelLayout::Order
int Order() const noexcept
AVChannelOrder as int.
StormByte::Multimedia::FFmpeg::AVChannelLayout::Default
static AVChannelLayout Default(int channels) noexcept
Default layout for channels.
StormByte::Multimedia::FFmpeg::AVChannelLayout::AVCodecParameters
friend class AVCodecParameters
Definition
AVChannelLayout.hxx:68
StormByte::Multimedia::FFmpeg::AVChannelLayout::Mask
std::uint64_t Mask() const noexcept
Native bitmask (u.mask) when order is native.
StormByte::Multimedia::FFmpeg::AVChannelLayout::NbChannels
int NbChannels() const noexcept
Channel count (nb_channels).
StormByte::Multimedia::FFmpeg::AVChannelLayout::Convert
friend struct Convert
Definition
AVChannelLayout.hxx:67
StormByte::Multimedia::FFmpeg::AVChannelLayout::Swr
friend class Swr
Definition
AVChannelLayout.hxx:72
StormByte::Multimedia::FFmpeg::AVChannelLayout::AVEncoder
friend class AVEncoder
Definition
AVChannelLayout.hxx:70
StormByte::Multimedia::FFmpeg::AVChannelLayout::AVDecoder
friend class AVDecoder
Definition
AVChannelLayout.hxx:69
StormByte::Multimedia::FFmpeg::AVChannelLayout::AVChannelLayout
AVChannelLayout() noexcept
Empty layout.
StormByte::Multimedia::FFmpeg::AVChannelLayout::AVFrame
friend class AVFrame
Definition
AVChannelLayout.hxx:71
StormByte::Multimedia::FFmpeg::AVChannelLayout::Describe
std::string Describe() const noexcept
FFmpeg layout name (av_channel_layout_describe).
StormByte::Multimedia::FFmpeg::AVCodecParameters
Deep-copying RAII wrapper for AVCodecParameters.
Definition
AVCodecParameters.hxx:59
StormByte::Multimedia::FFmpeg::AVDecoder
RAII decoder context with optional BSF pipeline.
Definition
AVDecoder.hxx:61
StormByte::Multimedia::FFmpeg::AVEncoder
RAII encoder context with optional BSF pipeline.
Definition
AVEncoder.hxx:68
StormByte::Multimedia::FFmpeg::AVFrame
RAII owner of a libav AVFrame.
Definition
AVFrame.hxx:98
StormByte::Multimedia::FFmpeg::Swr
RAII SwrContext for audio convert / resample.
Definition
Swr.hxx:59
fwd.hxx
Incomplete FFmpeg types for RAII headers.
StormByte::Multimedia::FFmpeg
Private RAII wrappers over libav*.
StormByte::Multimedia::FFmpeg::Convert
Friend of AVChannelLayout.
Definition
convert.hxx:61
visibility.h
STORMBYTE_MULTIMEDIA_PUBLIC
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition
visibility.h:47
lib
public
StormByte
multimedia
ffmpeg
AVChannelLayout.hxx
Generated by
1.15.0