summaryrefslogtreecommitdiffstats
path: root/src/plugins/pulseaudio
diff options
context:
space:
mode:
authorLev Zelenskiy <lev.zelenskiy@nokia.com>2012-06-28 15:04:09 +1000
committerQt by Nokia <qt-info@nokia.com>2012-06-28 09:17:47 +0200
commitdcf79d4998cd106a5ebc62ab213fa954f79c388d (patch)
tree6399d9677649e51ccb220ed2d632842394a43a7a /src/plugins/pulseaudio
parent6f7867b5e9087b2355462d3b24ae39f3af0a73ad (diff)
Read actual period size after initializing a stream.
QTBUG-23833 Change-Id: I2bd352cf34d12e1be22f640c47fc2388dc3a7f8a Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'src/plugins/pulseaudio')
-rw-r--r--src/plugins/pulseaudio/qaudioinput_pulse.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/plugins/pulseaudio/qaudioinput_pulse.cpp b/src/plugins/pulseaudio/qaudioinput_pulse.cpp
index d88a48bc1..cdb39281e 100644
--- a/src/plugins/pulseaudio/qaudioinput_pulse.cpp
+++ b/src/plugins/pulseaudio/qaudioinput_pulse.cpp
@@ -169,6 +169,7 @@ QPulseAudioInput::QPulseAudioInput(const QByteArray &device)
, m_bufferSize(0)
, m_periodSize(0)
, m_intervalTime(1000)
+ , m_periodTime(PeriodTimeMs)
, m_stream(0)
, m_device(device)
{
@@ -345,13 +346,18 @@ bool QPulseAudioInput::open()
pa_threaded_mainloop_wait(pulseEngine->mainloop());
}
+ const pa_buffer_attr *actualBufferAttr = pa_stream_get_buffer_attr(m_stream);
+ m_periodSize = actualBufferAttr->fragsize;
+ m_periodTime = pa_bytes_to_usec(m_periodSize, &spec) / 1000;
+ if (actualBufferAttr->tlength != (uint32_t)-1)
+ m_bufferSize = actualBufferAttr->tlength;
+
setPulseVolume();
pa_threaded_mainloop_unlock(pulseEngine->mainloop());
m_opened = true;
- m_periodSize = pa_usec_to_bytes(PeriodTimeMs*1000, &spec);
- m_timer->start(PeriodTimeMs);
+ m_timer->start(m_periodTime);
m_errorState = QAudio::NoError;
m_totalTimeValue = 0;
@@ -533,7 +539,7 @@ void QPulseAudioInput::resume()
pa_threaded_mainloop_unlock(pulseEngine->mainloop());
- m_timer->start(PeriodTimeMs);
+ m_timer->start(m_periodTime);
m_deviceState = QAudio::ActiveState;