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
qaudioengine_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
4
#
ifndef
QAUDIOENGINE_P_H
5
#
define
QAUDIOENGINE_P_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists for the convenience
12
// of other Qt classes. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#
include
<
QtSpatialAudio
/
qaudioengine
.
h
>
19
#
include
<
QtMultimedia
/
private
/
qaudiosystem_p
.
h
>
20
#
include
<
QtGui
/
qvectornd
.
h
>
21
#
include
<
QtCore
/
private
/
qobject_p
.
h
>
22
23
#
include
<
optional
>
24
25
namespace
vraudio
{
26
class
ResonanceAudio;
27
}
// namespace vraudio
28
29
QT_BEGIN_NAMESPACE
30
31
namespace
QSpatialAudioPrivate
{
32
class
QSpatialAudioPlaybackState
;
33
}
// namespace QSpatialAudioPrivate
34
35
class
QSpatialAudioSoundPrivate
;
36
class
QAudioRoom;
37
class
QAudioListener;
38
39
class
QAudioEnginePrivate
:
public
QObjectPrivate
40
{
41
public
:
42
Q_DECLARE_PUBLIC(QAudioEngine)
43
44
static
QAudioEnginePrivate
*
get
(QAudioEngine *engine)
45
{
46
return
engine ?
static_cast
<
QAudioEnginePrivate
*>(engine->d_func()) :
nullptr
;
47
}
48
49
explicit
QAudioEnginePrivate
(
int
sampleRate);
50
~
QAudioEnginePrivate
()
override
;
51
52
int
sampleRate
()
const
{
return
m_sampleRate; }
53
static
constexpr
QtMultimediaPrivate
::
NativePeriodFrames
framesPerBuffer
{ 128 };
54
55
void
setDistanceScale
(
float
scale);
56
float
distanceScale
()
const
;
57
58
// resonanceAudio access
59
void
setMasterVolume
(
float
);
60
float
masterVolume
()
const
;
61
float
m_masterVolume
= 1.f;
62
63
// Listener position
64
// if set to nullopt, no QAudioListener is registered
65
void
setListenerPosition
(
std
::
optional
<
QVector3D
>);
66
std
::
optional
<
QVector3D
>
listenerPosition
()
const
{
return
m_position; }
67
void
setListenerRotation
(
const
QQuaternion &);
68
69
// room effects
70
void
setRoomEffectsEnabled
(
bool
);
71
bool
roomEffectsEnabled
()
const
;
72
73
// output mode
74
virtual
void
setOutputMode
(
QAudioEngine
::
OutputMode
);
75
QAudioEngine
::
OutputMode
outputMode
()
const
;
76
77
// rooms
78
void
addRoom
(QAudioRoom *);
79
void
removeRoom
(QAudioRoom *);
80
QAudioRoom *
currentRoom
()
const
;
81
void
updateRooms
();
82
virtual
void
updateRoomEffects
() = 0;
83
84
virtual
void
start
() = 0;
85
virtual
void
stop
() = 0;
86
virtual
void
setPaused
(
bool
) = 0;
87
virtual
bool
isPaused
()
const
= 0;
88
virtual
void
setOutputDevice
(
const
QAudioDevice &) = 0;
89
virtual
QAudioDevice
outputDevice
()
const
= 0;
90
91
virtual
void
addSound
(
QSpatialAudioSoundPrivate
*) = 0;
92
virtual
void
removeSound
(
QSpatialAudioSoundPrivate
*) = 0;
93
using
SharedPlaybackState
=
std
::
shared_ptr
<
QSpatialAudioPrivate
::
QSpatialAudioPlaybackState
>;
94
virtual
void
setSoundPlaybackData
(
QSpatialAudioSoundPrivate
*,
SharedPlaybackState
) = 0;
95
96
protected
:
97
struct
SmallestRoomForListenerResult
98
{
99
QAudioRoom *
room
;
100
float
volume
;
101
};
102
103
SmallestRoomForListenerResult
findSmallestRoomForListener
(QSpan<QAudioRoom *> rooms)
const
;
104
105
private
:
106
const
int
m_sampleRate = 44100;
107
108
// Resonance Audio uses meters internally, while Qt Quick 3D and our API uses cm by
109
// default. To make things independent from the scale setting, we store all distances in
110
// meters internally and convert in the setters and getters.
111
float
m_distanceScale = 0.01f;
112
113
std::optional<QVector3D> m_position;
114
QAudioEngine
::
OutputMode
m_outputMode
=
QAudioEngine
::
Surround
;
115
116
std::vector<QAudioRoom *> rooms;
117
QAudioRoom *m_currentRoom =
nullptr
;
118
119
public
:
120
const
std
::
shared_ptr
<
vraudio
::
ResonanceAudio
>
resonanceAudio
;
121
};
122
123
QT_END_NAMESPACE
124
125
#
endif
QAudioEnginePrivate
Definition
qaudioengine_p.h:40
QAudioEnginePrivate::removeRoom
void removeRoom(QAudioRoom *)
Definition
qaudioengine.cpp:119
QAudioEnginePrivate::framesPerBuffer
static constexpr QtMultimediaPrivate::NativePeriodFrames framesPerBuffer
Definition
qaudioengine_p.h:53
QAudioEnginePrivate::removeSound
virtual void removeSound(QSpatialAudioSoundPrivate *)=0
QAudioEnginePrivate::setSoundPlaybackData
virtual void setSoundPlaybackData(QSpatialAudioSoundPrivate *, SharedPlaybackState)=0
QAudioEnginePrivate::setMasterVolume
void setMasterVolume(float)
Definition
qaudioengine.cpp:51
QAudioEnginePrivate::isPaused
virtual bool isPaused() const =0
QAudioEnginePrivate::addSound
virtual void addSound(QSpatialAudioSoundPrivate *)=0
QAudioEnginePrivate::QAudioEnginePrivate
QAudioEnginePrivate(int sampleRate)
Definition
qaudioengine.cpp:25
QAudioEnginePrivate::updateRoomEffects
virtual void updateRoomEffects()=0
QAudioEnginePrivate::resonanceAudio
const std::shared_ptr< vraudio::ResonanceAudio > resonanceAudio
Definition
qaudioengine_p.h:120
QAudioEnginePrivate::sampleRate
int sampleRate() const
Definition
qaudioengine_p.h:52
QAudioEnginePrivate::addRoom
void addRoom(QAudioRoom *)
Definition
qaudioengine.cpp:113
QAudioEnginePrivate::roomEffectsEnabled
bool roomEffectsEnabled() const
Definition
qaudioengine.cpp:92
QAudioEnginePrivate::start
virtual void start()=0
QAudioEnginePrivate::distanceScale
float distanceScale() const
Definition
qaudioengine.cpp:46
QAudioEnginePrivate::m_masterVolume
float m_masterVolume
Definition
qaudioengine_p.h:61
QAudioEnginePrivate::setOutputDevice
virtual void setOutputDevice(const QAudioDevice &)=0
QAudioEnginePrivate::currentRoom
QAudioRoom * currentRoom() const
Definition
qaudioengine.cpp:125
QAudioEnginePrivate::setOutputMode
virtual void setOutputMode(QAudioEngine::OutputMode)
Definition
qaudioengine.cpp:97
QAudioEnginePrivate::findSmallestRoomForListener
SmallestRoomForListenerResult findSmallestRoomForListener(QSpan< QAudioRoom * > rooms) const
Definition
qaudioengine.cpp:170
QAudioEnginePrivate::setListenerPosition
void setListenerPosition(std::optional< QVector3D >)
Definition
qaudioengine.cpp:66
QAudioEnginePrivate::masterVolume
float masterVolume() const
Definition
qaudioengine.cpp:61
QAudioEnginePrivate::listenerPosition
std::optional< QVector3D > listenerPosition() const
Definition
qaudioengine_p.h:66
QAudioEnginePrivate::get
static QAudioEnginePrivate * get(QAudioEngine *engine)
Definition
qaudioengine_p.h:44
QAudioEnginePrivate::setDistanceScale
void setDistanceScale(float scale)
Definition
qaudioengine.cpp:37
QAudioEnginePrivate::updateRooms
void updateRooms()
Definition
qaudioengine.cpp:130
QAudioEnginePrivate::setListenerRotation
void setListenerRotation(const QQuaternion &)
Definition
qaudioengine.cpp:79
QAudioEnginePrivate::setPaused
virtual void setPaused(bool)=0
QAudioEnginePrivate::outputDevice
virtual QAudioDevice outputDevice() const =0
QAudioEnginePrivate::~QAudioEnginePrivate
~QAudioEnginePrivate() override
QAudioEnginePrivate::stop
virtual void stop()=0
QAudioEnginePrivate::setRoomEffectsEnabled
void setRoomEffectsEnabled(bool)
Definition
qaudioengine.cpp:85
QAudioEngine
\inmodule QtSpatialAudio
Definition
qaudioengine.h:16
QSpatialAudioPrivate::QSpatialAudioPlaybackState
Definition
qspatialaudiosound_p.h:43
QSpatialAudioSoundPrivate
Definition
qspatialaudiosound_p.h:70
QSpatialAudioPrivate
Definition
qaudioengine_p.h:31
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
vraudio
Definition
resonance_audio.cpp:7
Q_LOGGING_CATEGORY
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")
QAudioEnginePrivate::SmallestRoomForListenerResult
Definition
qaudioengine_p.h:98
QAudioEnginePrivate::SmallestRoomForListenerResult::volume
float volume
Definition
qaudioengine_p.h:100
QAudioEnginePrivate::SmallestRoomForListenerResult::room
QAudioRoom * room
Definition
qaudioengine_p.h:99
qtmultimedia
src
spatialaudio
qaudioengine_p.h
Generated on
for Qt by
1.18.0