4#ifndef QAMBIENTSOUND_P_H
5#define QAMBIENTSOUND_P_H
18#include <QtSpatialAudio/qambientsound.h>
19#include <QtSpatialAudio/private/qtspatialaudioglobal_p.h>
20#include <QtCore/qmutex.h>
21#include <QtCore/qurl.h>
22#include <QtCore/qfuture.h>
23#include <QtCore/private/qobject_p.h>
24#include <QtCore/private/qexpected_p.h>
25#include <QtMultimedia/qaudiobuffer.h>
26#include <QtMultimedia/qaudiodecoder.h>
27#include <QtMultimedia/qaudioformat.h>
28#include <QtMultimedia/private/qmultimedia_source_resolver_p.h>
41 Q_DECLARE_PUBLIC(QAmbientSound)
50 return soundSource ? soundSource->d_func() :
nullptr;
57 float volume()
const {
return m_volume; }
72 void play() { m_playing =
true; }
73 void pause() { m_playing =
false; }
76 QMutexLocker locker(&mutex);
82 void getBuffer(QSpan<
float> buf,
int frames,
int channels);
87 std::unique_ptr<QAudioDecoder> m_decoder;
90 int currentBuffer = 0;
92 int m_currentLoop = 0;
94 QList<QAudioBuffer> buffers;
95 QFuture<
void> m_loadFuture;
98 QFuture<LoadResult> load(QUrl resolvedUrl, QAudioFormat format);
106 std::unique_ptr<
const AbstractSourceResolver> m_sourceResolver =
void setVolume(float volume)
void loadUrl(const QUrl &url)
std::atomic_bool m_playing
static QAmbientSoundPrivate * get(T *soundSource)
virtual void applyVolume()
void getBuffer(QSpan< float > buf, int frames, int channels)
QAudioEngine *const engine
std::atomic_bool m_autoPlay