StormByte C++ Library: Multimedia module 0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
AVCodecParameters.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
47
48#include <cstdint>
49
59 class STORMBYTE_MULTIMEDIA_PUBLIC AVCodecParameters: public AVPointer<::AVCodecParameters> {
60 friend class AVBSF;
61 friend class AVDecoder;
62 friend class AVEncoder;
63 friend class AVFormatContext;
64 public:
69 explicit AVCodecParameters(::AVCodecParameters* par) noexcept;
70
75 AVCodecParameters(const AVCodecParameters& other) noexcept;
76
81 AVCodecParameters(AVCodecParameters&& other) noexcept = default;
82
86 ~AVCodecParameters() noexcept override;
87
93 AVCodecParameters& operator=(const AVCodecParameters& other) noexcept;
94
100 AVCodecParameters& operator=(AVCodecParameters&& other) noexcept = default;
101
106 int CodecId() const noexcept;
107
112 void CodecId(int id) noexcept;
113
118 std::int64_t BitRate() const noexcept;
119
124 void BitRate(std::int64_t bit_rate) noexcept;
125
130 int Width() const noexcept;
131
136 void Width(int width) noexcept;
137
142 int Height() const noexcept;
143
148 void Height(int height) noexcept;
149
155
160 void SampleAspectRatio(AVRational sar) noexcept;
161
166 int Format() const noexcept;
167
172 void Format(int format) noexcept;
173
178 int ColorRange() const noexcept;
179
184 void ColorRange(int range) noexcept;
185
190 int ColorSpace() const noexcept;
191
196 void ColorSpace(int space) noexcept;
197
202 int ColorPrimaries() const noexcept;
203
208 void ColorPrimaries(int primaries) noexcept;
209
214 int ColorTransfer() const noexcept;
215
220 void ColorTransfer(int transfer) noexcept;
221
226 int SampleRate() const noexcept;
227
232 void SampleRate(int rate) noexcept;
233
238 int Channels() const noexcept;
239
244 int Profile() const noexcept;
245
250 void Profile(int profile) noexcept;
251
257
262 void DefaultChannelLayout(int channels) noexcept;
263
268 explicit operator bool() const noexcept;
269
275 bool CopyChannelLayout(const AVChannelLayout& layout) noexcept;
276
282 bool Export(::AVCodecParameters* dest) const noexcept;
283
288 void WriteHdr10(const StormByte::Multimedia::Property::HDR10& hdr10) noexcept;
289
294 int CodecType() const noexcept;
295
300 void CodecType(int type) noexcept;
301
302 private:
306 void Free() noexcept override;
307
309 };
310
312}
RAII AVChannelLayout (av_channel_layout_copy / uninit).
Definition AVChannelLayout.hxx:66
AVRational SampleAspectRatio() const noexcept
Pixel aspect ratio (sample_aspect_ratio).
int CodecId() const noexcept
FFmpeg codec id.
AVCodecParameters(const AVCodecParameters &other) noexcept
Copy constructor (deep copy).
AVCodecParameters(::AVCodecParameters *par) noexcept
Allocates and optionally copies from par.
friend class AVBSF
Definition AVCodecParameters.hxx:60
friend class AVFormatContext
Definition AVCodecParameters.hxx:63
int ColorPrimaries() const noexcept
Color primaries.
int ColorTransfer() const noexcept
Transfer characteristics.
bool Export(::AVCodecParameters *dest) const noexcept
Copies this into dest (avcodec_parameters_copy).
void WriteHdr10(const StormByte::Multimedia::Property::HDR10 &hdr10) noexcept
Writes mastering display and content light onto coded side data.
int Channels() const noexcept
Audio channel count.
~AVCodecParameters() noexcept override
Destructor.
int Format() const noexcept
Pixel or sample format.
void DefaultChannelLayout(int channels) noexcept
Replaces the layout with FFmpeg's default for channels.
int Profile() const noexcept
Codec profile id.
friend class AVEncoder
Definition AVCodecParameters.hxx:62
bool CopyChannelLayout(const AVChannelLayout &layout) noexcept
Replaces the channel layout.
AVCodecParameters(AVCodecParameters &&other) noexcept=default
Move constructor.
int Height() const noexcept
Frame height in pixels.
friend class AVDecoder
Definition AVCodecParameters.hxx:61
int Width() const noexcept
Frame width in pixels.
int SampleRate() const noexcept
Audio sample rate in Hz.
int ColorRange() const noexcept
Color range.
AVChannelLayout ChannelLayout() const noexcept
Channel layout owned by this wrapper.
std::int64_t BitRate() const noexcept
Stream bitrate in bits per second.
int ColorSpace() const noexcept
Matrix coefficients.
int CodecType() const noexcept
Media type.
constexpr const std::decay_t< ::AVCodecParameters > * Get() const noexcept
Definition AVPointer.hxx:118
Pair {num, den} matching libavutil AVRational.
Definition av_rational.hxx:62
Incomplete FFmpeg types for RAII headers.
Private RAII wrappers over libav*.
Media property value types.
Public multimedia types: codecs, containers, streams and files.
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition visibility.h:47