Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qambisonicdecoder_p.h
Go to the documentation of this file.
1
// Copyright (C) 2022 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-3.0-only
3
#
ifndef
QAMBISONICDECODER_P_H
4
#
define
QAMBISONICDECODER_P_H
5
6
//
7
// W A R N I N G
8
// -------------
9
//
10
// This file is not part of the Qt API. It exists purely as an
11
// implementation detail. This header file may change from version to
12
// version without notice, or even be removed.
13
//
14
// We mean it.
15
//
16
17
#
include
<
QtMultimedia
/
qaudioformat
.
h
>
18
#
include
<
QtSpatialAudio
/
private
/
qtspatialaudioglobal_p
.
h
>
19
#
include
<
QtCore
/
qspan
.
h
>
20
21
#
include
<
memory
>
22
23
QT_BEGIN_NAMESPACE
24
25
struct
QAmbisonicDecoderData;
26
class
QAmbisonicDecoderFilter
;
27
28
class
QAmbisonicDecoder
29
{
30
public
:
31
enum
AmbisonicOrder
{
32
Ambisonic1stOrder
= 1,
33
LowQuality
=
Ambisonic1stOrder
,
34
Ambisonic2ndOrder
= 2,
35
MediumQuality
=
Ambisonic2ndOrder
,
36
Ambisonic3rdOrder
= 3,
37
HighQuality
=
Ambisonic3rdOrder
38
};
39
QAmbisonicDecoder
(
AmbisonicOrder
,
int
sampleRate,
int
numberOfOutputChannels,
40
QAudioFormat
::
ChannelConfig
);
41
~
QAmbisonicDecoder
();
42
43
bool
hasValidConfig
()
const
{
return
decoderData !=
nullptr
|| simpleDecoderFactors !=
nullptr
; }
44
45
int
nInputChannels
()
const
{
return
inputChannels; }
46
int
nOutputChannels
()
const
{
return
outputChannels; }
47
48
int
outputSamples
(
int
nFrames)
const
{
return
outputChannels * nFrames; }
49
50
// input is planar, output interleaved
51
void
processBuffer
(QSpan<
const
float
*> input, QSpan<
float
> output);
52
53
void
processBufferWithReverb
(QSpan<
const
float
*> input, QSpan<
const
float
*, 2> reverb,
54
QSpan<
float
> output);
55
56
static
constexpr
int
maxAmbisonicChannels
= 16;
57
static
constexpr
int
maxAmbisonicOrder
= 3;
58
59
private
:
60
const
QAudioFormat::ChannelConfig channelConfig;
61
const
AmbisonicOrder
order;
62
const
int
inputChannels;
63
const
int
outputChannels;
64
const
QAmbisonicDecoderData *decoderData =
nullptr
;
65
std::unique_ptr<QAmbisonicDecoderFilter[]> filters;
66
std::unique_ptr<
float
[]> simpleDecoderFactors;
67
68
const
float
*reverbFactors =
nullptr
;
69
std::unique_ptr<
float
[]> m_reverbFactorsOwned;
70
};
71
72
73
QT_END_NAMESPACE
74
75
#
endif
QAmbisonicDecoderFilter
Definition
qambisonicdecoder.cpp:83
QAmbisonicDecoderFilter::QAmbisonicDecoderFilter
QAmbisonicDecoderFilter()=default
QAmbisonicDecoderFilter::next
Output next(float x)
Definition
qambisonicdecoder.cpp:107
QAmbisonicDecoderFilter::configure
void configure(float sampleRate, float cutoffFrequency=380)
Definition
qambisonicdecoder.cpp:86
QAmbisonicDecoder
Definition
qambisonicdecoder_p.h:29
QAmbisonicDecoder::maxAmbisonicOrder
static constexpr int maxAmbisonicOrder
Definition
qambisonicdecoder_p.h:57
QAmbisonicDecoder::processBuffer
void processBuffer(QSpan< const float * > input, QSpan< float > output)
Definition
qambisonicdecoder.cpp:238
QAmbisonicDecoder::AmbisonicOrder
AmbisonicOrder
Definition
qambisonicdecoder_p.h:31
QAmbisonicDecoder::Ambisonic1stOrder
@ Ambisonic1stOrder
Definition
qambisonicdecoder_p.h:32
QAmbisonicDecoder::Ambisonic2ndOrder
@ Ambisonic2ndOrder
Definition
qambisonicdecoder_p.h:34
QAmbisonicDecoder::MediumQuality
@ MediumQuality
Definition
qambisonicdecoder_p.h:35
QAmbisonicDecoder::LowQuality
@ LowQuality
Definition
qambisonicdecoder_p.h:33
QAmbisonicDecoder::Ambisonic3rdOrder
@ Ambisonic3rdOrder
Definition
qambisonicdecoder_p.h:36
QAmbisonicDecoder::HighQuality
@ HighQuality
Definition
qambisonicdecoder_p.h:37
QAmbisonicDecoder::QAmbisonicDecoder
QAmbisonicDecoder(AmbisonicOrder, int sampleRate, int numberOfOutputChannels, QAudioFormat::ChannelConfig)
Definition
qambisonicdecoder.cpp:162
QAmbisonicDecoder::nInputChannels
int nInputChannels() const
Definition
qambisonicdecoder_p.h:45
QAmbisonicDecoder::maxAmbisonicChannels
static constexpr int maxAmbisonicChannels
Definition
qambisonicdecoder_p.h:56
QAmbisonicDecoder::nOutputChannels
int nOutputChannels() const
Definition
qambisonicdecoder_p.h:46
QAmbisonicDecoder::processBufferWithReverb
void processBufferWithReverb(QSpan< const float * > input, QSpan< const float *, 2 > reverb, QSpan< float > output)
Definition
qambisonicdecoder.cpp:269
QAmbisonicDecoder::~QAmbisonicDecoder
~QAmbisonicDecoder()
QAmbisonicDecoder::outputSamples
int outputSamples(int nFrames) const
Definition
qambisonicdecoder_p.h:48
QAmbisonicDecoder::hasValidConfig
bool hasValidConfig() const
Definition
qambisonicdecoder_p.h:43
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
decoderMap
static constexpr QAmbisonicDecoderData decoderMap[]
Definition
qambisonicdecoder.cpp:57
reverb_x_1
constexpr float reverb_x_1[]
Definition
qambisonicdecoder.cpp:46
reverb_x_0
constexpr float reverb_x_0[]
Definition
qambisonicdecoder.cpp:36
M_PI
#define M_PI
Definition
qmath.h:201
QAmbisonicDecoderFilter::Output
Definition
qambisonicdecoder.cpp:102
QAmbisonicDecoderFilter::Output::lf
float lf
Definition
qambisonicdecoder.cpp:103
QAmbisonicDecoderFilter::Output::hf
float hf
Definition
qambisonicdecoder.cpp:104
qtmultimedia
src
spatialaudio
qambisonicdecoder_p.h
Generated on
for Qt by
1.18.0