4#ifndef QSPATIALAUDIOSOUND_P_H
5#define QSPATIALAUDIOSOUND_P_H
18#include <QtMultimedia/qaudiobuffer.h>
19#include <QtMultimedia/qaudioformat.h>
20#include <QtMultimedia/private/qmultimedia_source_resolver_p.h>
21#include <QtMultimedia/private/qsamplecache_p.h>
22#include <QtSpatialAudio/private/qtspatialaudioglobal_p.h>
23#include <QtCore/qurl.h>
24#include <QtCore/qfuture.h>
25#include <QtCore/private/qobject_p.h>
31class ResonanceAudioApi;
37class QQuick3DSpatialSound;
57 std::atomic_bool m_playing =
false;
58 std::atomic_int m_loops = 1;
61 int m_currentSample = 0;
62 int m_currentLoop = 0;
64 const QAudioBuffer m_buffer;
79 float volume()
const {
return m_volume; }
81 int loops()
const {
return m_loops; }
104 template <
typename Functor>
107 auto *api = getAPI();
111 using result = std::invoke_result_t<Functor, vraudio::ResonanceAudioApi *>;
112 if constexpr (std::is_void_v<result>)
123 bool m_autoPlay =
true;
125 float m_volume = 1.f;
128 SharedSamplePtr m_sample;
129 std::optional<QAudioBuffer> m_buffer;
130 QFuture<
void> m_loadFuture;
136 friend class QQuick3DSpatialSound;
138 std::unique_ptr<
const AbstractSourceResolver> m_sourceResolver =
141 vraudio::ResonanceAudioApi *getAPI();
146 SharedPlaybackState m_playbackState;
148 void setState(SharedPlaybackState);
QSpatialAudioPlaybackState(QAudioBuffer buffer, bool playing, int loops)
QAudioFormat format() const
void getBuffer(QSpan< float > output)
void loadUrl(const QUrl &url)
QAudioEngine *const engine
void setVolume(float volume)
virtual void updateRoomEffects()
auto withResonanceApi(Functor &&f)
~QSpatialAudioSoundPrivate()
virtual void applyVolume()
QSpatialAudioSoundPrivate(QAudioEngine *engine, int nchannels, int sourceId)
constexpr int InfiniteLoops