summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/windows/audio/qwindowsaudiooutput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/platform/windows/audio/qwindowsaudiooutput.cpp')
-rw-r--r--src/multimedia/platform/windows/audio/qwindowsaudiooutput.cpp34
1 files changed, 4 insertions, 30 deletions
diff --git a/src/multimedia/platform/windows/audio/qwindowsaudiooutput.cpp b/src/multimedia/platform/windows/audio/qwindowsaudiooutput.cpp
index 7a47d277a..b9f746e91 100644
--- a/src/multimedia/platform/windows/audio/qwindowsaudiooutput.cpp
+++ b/src/multimedia/platform/windows/audio/qwindowsaudiooutput.cpp
@@ -233,9 +233,8 @@ bool QWindowsAudioOutput::open()
// Default buffer size, 200ms, default period size is 40ms
buffer_size
= (settings.sampleRate()
- * settings.channelCount()
- * settings.sampleSize()
- + 39) / 40;
+ * settings.bytesPerFrame()
+ + 39) / 5;
period_size = buffer_size / 5;
} else {
period_size = buffer_size / 5;
@@ -304,7 +303,7 @@ bool QWindowsAudioOutput::open()
void QWindowsAudioOutput::pauseAndSleep()
{
waveOutPause(hWaveOut);
- int bitrate = settings.sampleRate() * settings.channelCount() * settings.sampleSize() / 8;
+ int bitrate = settings.sampleRate() * settings.bytesPerFrame();
// Time of written data.
int delay = (buffer_size - bytesFree()) * 1000 / bitrate;
Sleep(delay + 10);
@@ -367,8 +366,7 @@ qint64 QWindowsAudioOutput::processedUSecs() const
if (deviceState == QAudio::StoppedState)
return 0;
qint64 result = qint64(1000000) * totalTimeValue /
- (settings.channelCount()*(settings.sampleSize()/8)) /
- settings.sampleRate();
+ settings.bytesPerFrame() / settings.sampleRate();
return result;
}
@@ -382,30 +380,6 @@ qint64 QWindowsAudioOutput::write( const char *data, qint64 len )
char* p = (char*)data;
int l = (int)len;
- QByteArray reverse;
- if (settings.byteOrder() == QAudioFormat::BigEndian) {
-
- switch (settings.sampleSize()) {
- case 8:
- // No need to convert
- break;
-
- case 16:
- reverse.resize(l);
- for (qint64 i = 0; i < (l >> 1); i++)
- *((qint16*)reverse.data() + i) = qFromBigEndian(*((qint16*)data + i));
- p = reverse.data();
- break;
-
- case 32:
- reverse.resize(l);
- for (qint64 i = 0; i < (l >> 2); i++)
- *((qint32*)reverse.data() + i) = qFromBigEndian(*((qint32*)data + i));
- p = reverse.data();
- break;
- }
- }
-
WAVEHDR* current;
int remain;
current = &waveBlocks[waveCurrentBlock];