diff options
author | Lev Zelenskiy <lev.zelenskiy@nokia.com> | 2012-06-28 15:04:09 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-28 09:17:47 +0200 |
commit | dcf79d4998cd106a5ebc62ab213fa954f79c388d (patch) | |
tree | 6399d9677649e51ccb220ed2d632842394a43a7a /src/plugins/pulseaudio | |
parent | 6f7867b5e9087b2355462d3b24ae39f3af0a73ad (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.cpp | 12 |
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; |