audioSource = 0;
pullMode = true;
finished = false;
+ volumeCache = (qreal)1.;
}
QAudioOutputPrivate::~QAudioOutputPrivate()
timeStampOpened.restart();
elapsedTimeOffset = 0;
+ setVolume(volumeCache);
+
errorState = QAudio::NoError;
if(pullMode) {
deviceState = QAudio::ActiveState;
return deviceState;
}
+void QAudioOutputPrivate::setVolume(qreal v)
+{
+ const qreal normalizedVolume = qBound(qreal(0.0), v, qreal(1.0));
+ if (deviceState != QAudio::ActiveState) {
+ volumeCache = normalizedVolume;
+ return;
+ }
+ const qint16 scaled = normalizedVolume * 0xFFFF;
+ DWORD vol = MAKELONG(scaled, scaled);
+ MMRESULT res = waveOutSetVolume(hWaveOut, vol);
+ if (res == MMSYSERR_NOERROR)
+ volumeCache = normalizedVolume;
+}
+
+qreal QAudioOutputPrivate::volume() const
+{
+ return volumeCache;
+}
+
void QAudioOutputPrivate::reset()
{
close();
qint64 elapsedUSecs() const;
QAudio::Error error() const;
QAudio::State state() const;
+ void setVolume(qreal);
+ qreal volume() const;
QIODevice* audioSource;
QAudioFormat settings;
qint64 totalTimeValue;
bool pullMode;
int intervalTime;
+ qreal volumeCache;
static void QT_WIN_CALLBACK waveOutProc( HWAVEOUT hWaveOut, UINT uMsg,
DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 );