StormByte C++ Library: Multimedia module
0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
AVBSF.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/AVPointer.hxx
>
42
#include <
StormByte/multimedia/ffmpeg/AVRational.hxx
>
43
#include <
StormByte/multimedia/ffmpeg/fwd.hxx
>
44
#include <
StormByte/multimedia/ffmpeg/typedefs.hxx
>
45
50
namespace
StormByte::Multimedia::FFmpeg
{
51
class
AVCodecParameters
;
52
class
AVPacket
;
53
58
class
STORMBYTE_MULTIMEDIA_PUBLIC
AVBSF
:
public
AVPointer
<::AVBSFContext> {
59
public
:
63
AVBSF
(
const
AVBSF
&) =
delete
;
64
69
AVBSF
(
AVBSF
&& other)
noexcept
=
default
;
70
74
~AVBSF
() noexcept override;
75
80
AVBSF
& operator=(const
AVBSF
&) = delete;
81
87
AVBSF
& operator=(
AVBSF
&& other) noexcept;
88
96
static
ExpectedAVBSF
Create
(const std::
string
& name, const
AVCodecParameters
& params,
AVRational
time_base) noexcept;
97
103
OperationResult
SendPacket
(
AVPacket
& pkt) noexcept;
104
110
OperationResult
ReceivePacket
(
AVPacket
& pkt) noexcept;
111
115
void
Flush
() noexcept;
116
120
void
SetEof
() noexcept;
121
122
private:
127
explicit
AVBSF
(AVBSFContext* ctx) noexcept;
128
132
void
Free() noexcept override;
133
134
using
AVPointer
<::AVBSFContext>::
Get
;
135
};
136
137
extern template class
STORMBYTE_MULTIMEDIA_PUBLIC
AVPointer
<::AVBSFContext>;
138
}
AVPointer.hxx
AVRational.hxx
StormByte::Multimedia::FFmpeg::AVBSF::SendPacket
OperationResult SendPacket(AVPacket &pkt) noexcept
Sends a packet into the filter.
StormByte::Multimedia::FFmpeg::AVBSF::Flush
void Flush() noexcept
Flushes the filter.
StormByte::Multimedia::FFmpeg::AVBSF::SetEof
void SetEof() noexcept
Signals EOF (null packet).
StormByte::Multimedia::FFmpeg::AVBSF::AVBSF
AVBSF(AVBSF &&other) noexcept=default
Move constructor.
StormByte::Multimedia::FFmpeg::AVBSF::AVBSF
AVBSF(const AVBSF &)=delete
Copy constructor (deleted).
StormByte::Multimedia::FFmpeg::AVBSF::~AVBSF
~AVBSF() noexcept override
Destructor.
StormByte::Multimedia::FFmpeg::AVBSF::Create
static ExpectedAVBSF Create(const std::string &name, const AVCodecParameters ¶ms, AVRational time_base) noexcept
Creates and initializes a named BSF.
StormByte::Multimedia::FFmpeg::AVBSF::ReceivePacket
OperationResult ReceivePacket(AVPacket &pkt) noexcept
Receives a filtered packet.
StormByte::Multimedia::FFmpeg::AVCodecParameters
Deep-copying RAII wrapper for AVCodecParameters.
Definition
AVCodecParameters.hxx:59
StormByte::Multimedia::FFmpeg::AVPacket
RAII owner of a libav AVPacket.
Definition
AVPacket.hxx:83
StormByte::Multimedia::FFmpeg::AVPointer<::AVBSFContext >::Get
constexpr const std::decay_t< ::AVBSFContext > * Get() const noexcept
Definition
AVPointer.hxx:118
StormByte::Multimedia::FFmpeg::AVPointer<::AVBSFContext >::AVPointer
constexpr AVPointer() noexcept=delete
StormByte::Multimedia::Property::AVRational
Pair {num, den} matching libavutil AVRational.
Definition
av_rational.hxx:62
typedefs.hxx
fwd.hxx
Incomplete FFmpeg types for RAII headers.
StormByte::Multimedia::FFmpeg
Private RAII wrappers over libav*.
StormByte::Multimedia::FFmpeg::ExpectedAVBSF
StormByte::Expected< AVBSF, FFmpeg::BSFError > ExpectedAVBSF
Create BSF.
Definition
typedefs.hxx:72
StormByte::Multimedia::FFmpeg::OperationResult
OperationResult
Result of send/receive style FFmpeg calls.
Definition
typedefs.hxx:56
STORMBYTE_MULTIMEDIA_PUBLIC
#define STORMBYTE_MULTIMEDIA_PUBLIC
Imported symbol.
Definition
visibility.h:47
lib
public
StormByte
multimedia
ffmpeg
AVBSF.hxx
Generated by
1.15.0