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
qspatialaudiosound_p.h
Go to the documentation of this file.
1
// Copyright (C) 2026 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-3.0-only
3
4
#
ifndef
QSPATIALAUDIOSOUND_P_H
5
#
define
QSPATIALAUDIOSOUND_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
/
private
/
qtspatialaudioglobal_p
.
h
>
19
#
include
<
QtMultimedia
/
qaudiobuffer
.
h
>
20
#
include
<
QtMultimedia
/
qaudioformat
.
h
>
21
#
include
<
QtMultimedia
/
private
/
qmultimedia_source_resolver_p
.
h
>
22
#
include
<
QtMultimedia
/
private
/
qsamplecache_p
.
h
>
23
#
include
<
QtCore
/
qfuture
.
h
>
24
#
include
<
QtCore
/
qurl
.
h
>
25
#
include
<
QtCore
/
private
/
qobject_p
.
h
>
26
27
#
include
<
atomic
>
28
#
include
<
memory
>
29
30
namespace
vraudio
{
31
class
ResonanceAudioApi;
32
}
33
34
QT_BEGIN_NAMESPACE
35
36
class
QAudioEngine;
37
class
QQuick3DSpatialSound;
38
class
QQuick3DAmbientSound
;
39
40
namespace
QSpatialAudioPrivate
{
41
42
class
QSpatialAudioPlaybackState
43
{
44
public
:
45
explicit
QSpatialAudioPlaybackState
(QAudioBuffer buffer,
bool
playing,
int
loops);
46
47
void
getBuffer
(QSpan<
float
> output);
48
49
void
pause
();
50
void
resume
();
51
void
setLoops
(
int
);
52
53
QAudioFormat
format
()
const
;
54
55
private
:
56
// controls
57
std
::atomic_bool m_playing =
false
;
58
std
::atomic_int m_loops = 1;
59
60
// state
61
int
m_currentSample = 0;
62
int
m_currentLoop = 0;
63
64
const
QAudioBuffer m_buffer;
65
};
66
67
}
// namespace QSpatialAudioPrivate
68
69
class
QSpatialAudioSoundPrivate
:
public
QObjectPrivate
70
{
71
public
:
72
QSpatialAudioSoundPrivate
(QAudioEngine *engine,
int
nchannels,
int
sourceId);
73
~
QSpatialAudioSoundPrivate
();
74
75
QUrl
url
()
const
{
return
m_url; }
76
void
loadUrl
(
const
QUrl &url);
77
78
void
setVolume
(
float
volume);
79
float
volume
()
const
{
return
m_volume; }
80
81
int
loops
()
const
{
return
m_loops; }
82
void
setLoops
(
int
);
83
bool
autoPlay
()
const
{
return
m_autoPlay; }
84
void
setAutoPlay
(
bool
);
85
86
virtual
void
updateRoomEffects
() { }
87
88
void
play
();
89
void
pause
();
90
void
stop
();
91
92
const
int
nchannels
= 2;
93
QAudioEngine *
const
engine
;
94
const
int
sourceId
;
95
96
enum
class
State
:
uint8_t
{
97
Stopped
,
98
Playing
,
99
Paused
,
100
};
101
State
state
()
const
{
return
m_state; }
102
103
protected
:
104
template
<
typename
Functor>
105
auto
withResonanceApi
(Functor &&f)
106
{
107
auto
*api = getAPI();
108
if
(api)
109
f(api);
110
else
{
111
using
result = std::invoke_result_t<Functor, vraudio::ResonanceAudioApi *>;
112
if
constexpr
(std::is_void_v<result>)
113
return
;
114
else
115
return
result{ };
116
}
117
}
118
119
virtual
void
applyVolume
();
120
121
private
:
122
State
m_state =
State
::
Stopped
;
123
bool
m_autoPlay =
true
;
124
125
float
m_volume = 1.f;
126
int
m_loops = 1;
127
128
SharedSamplePtr m_sample;
129
std::optional<QAudioBuffer> m_buffer;
130
QFuture<
void
> m_loadFuture;
131
132
QUrl m_url;
// unresolved URL
133
using
AbstractSourceResolver
=
QMultimediaPrivate
::
AbstractSourceResolver
;
134
using
TrivialSourceResolver
=
QMultimediaPrivate
::
TrivialSourceResolver
;
135
136
friend
class
QQuick3DSpatialSound;
137
friend
class
QQuick3DAmbientSound
;
138
std::unique_ptr<
const
AbstractSourceResolver> m_sourceResolver =
139
std
::
make_unique
<
TrivialSourceResolver
>();
140
141
vraudio
::ResonanceAudioApi *getAPI();
142
143
// playback state
144
using
QSpatialAudioPlaybackState =
QSpatialAudioPrivate
::
QSpatialAudioPlaybackState
;
145
using
SharedPlaybackState =
std
::shared_ptr<
QSpatialAudioPrivate
::
QSpatialAudioPlaybackState
>;
146
SharedPlaybackState m_playbackState;
147
148
void
setState(SharedPlaybackState);
149
};
150
151
QT_END_NAMESPACE
152
153
#
endif
// QSPATIALAUDIOSOUND_P_H
QQuick3DAmbientSound
Definition
qquick3dambientsound_p.h:26
QSpatialAudioPrivate::QSpatialAudioPlaybackState
Definition
qspatialaudiosound_p.h:43
QSpatialAudioPrivate::QSpatialAudioPlaybackState::setLoops
void setLoops(int)
Definition
qspatialaudiosound.cpp:86
QSpatialAudioPrivate::QSpatialAudioPlaybackState::resume
void resume()
Definition
qspatialaudiosound.cpp:81
QSpatialAudioPrivate::QSpatialAudioPlaybackState::QSpatialAudioPlaybackState
QSpatialAudioPlaybackState(QAudioBuffer buffer, bool playing, int loops)
Definition
qspatialaudiosound.cpp:25
QSpatialAudioPrivate::QSpatialAudioPlaybackState::format
QAudioFormat format() const
Definition
qspatialaudiosound.cpp:91
QSpatialAudioPrivate::QSpatialAudioPlaybackState::pause
void pause()
Definition
qspatialaudiosound.cpp:96
QSpatialAudioPrivate::QSpatialAudioPlaybackState::getBuffer
void getBuffer(QSpan< float > output)
Definition
qspatialaudiosound.cpp:30
QSpatialAudioSoundPrivate
Definition
qspatialaudiosound_p.h:70
QSpatialAudioSoundPrivate::sourceId
const int sourceId
Definition
qspatialaudiosound_p.h:94
QSpatialAudioSoundPrivate::setAutoPlay
void setAutoPlay(bool)
Definition
qspatialaudiosound.cpp:136
QSpatialAudioSoundPrivate::url
QUrl url() const
Definition
qspatialaudiosound_p.h:75
QSpatialAudioSoundPrivate::pause
void pause()
Definition
qspatialaudiosound.cpp:170
QSpatialAudioSoundPrivate::state
State state() const
Definition
qspatialaudiosound_p.h:101
QSpatialAudioSoundPrivate::loadUrl
void loadUrl(const QUrl &url)
Definition
qspatialaudiosound.cpp:210
QSpatialAudioSoundPrivate::engine
QAudioEngine *const engine
Definition
qspatialaudiosound_p.h:93
QSpatialAudioSoundPrivate::setVolume
void setVolume(float volume)
Definition
qspatialaudiosound.cpp:123
QSpatialAudioSoundPrivate::volume
float volume() const
Definition
qspatialaudiosound_p.h:79
QSpatialAudioSoundPrivate::stop
void stop()
Definition
qspatialaudiosound.cpp:194
QSpatialAudioSoundPrivate::updateRoomEffects
virtual void updateRoomEffects()
Definition
qspatialaudiosound_p.h:86
QSpatialAudioSoundPrivate::withResonanceApi
auto withResonanceApi(Functor &&f)
Definition
qspatialaudiosound_p.h:105
QSpatialAudioSoundPrivate::State
State
Definition
qspatialaudiosound_p.h:96
QSpatialAudioSoundPrivate::State::Stopped
@ Stopped
Definition
qspatialaudiosound_p.h:97
QSpatialAudioSoundPrivate::State::Playing
@ Playing
Definition
qspatialaudiosound_p.h:98
QSpatialAudioSoundPrivate::State::Paused
@ Paused
Definition
qspatialaudiosound_p.h:99
QSpatialAudioSoundPrivate::setLoops
void setLoops(int)
Definition
qspatialaudiosound.cpp:129
QSpatialAudioSoundPrivate::nchannels
const int nchannels
Definition
qspatialaudiosound_p.h:92
QSpatialAudioSoundPrivate::autoPlay
bool autoPlay() const
Definition
qspatialaudiosound_p.h:83
QSpatialAudioSoundPrivate::~QSpatialAudioSoundPrivate
~QSpatialAudioSoundPrivate()
Definition
qspatialaudiosound.cpp:112
QSpatialAudioSoundPrivate::applyVolume
virtual void applyVolume()
Definition
qspatialaudiosound.cpp:141
QSpatialAudioSoundPrivate::QSpatialAudioSoundPrivate
QSpatialAudioSoundPrivate(QAudioEngine *engine, int nchannels, int sourceId)
Definition
qspatialaudiosound.cpp:103
QSpatialAudioSoundPrivate::loops
int loops() const
Definition
qspatialaudiosound_p.h:81
QSpatialAudioSoundPrivate::play
void play()
Definition
qspatialaudiosound.cpp:148
QSpatialAudioPrivate
Definition
qaudioengine_p.h:31
QSpatialAudioPrivate::InfiniteLoops
constexpr int InfiniteLoops
Definition
qspatialaudiosound.cpp:23
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
vraudio
Definition
resonance_audio.cpp:7
qtmultimedia
src
spatialaudio
qspatialaudiosound_p.h
Generated on
for Qt by
1.18.0