diff options
author | axis <qt-info@nokia.com> | 2010-06-24 11:14:21 (GMT) |
---|---|---|
committer | axis <qt-info@nokia.com> | 2010-06-24 11:14:21 (GMT) |
commit | 447f2b410335730cd172a76abce184bacae186d2 (patch) | |
tree | 73d93ef871e99f03eedd69eeb0fa74228c1e33d3 /src/multimedia/audio/qaudioinput_mac_p.cpp | |
parent | 5ce3b09f9b3c574fc4ab2ecc42f879e64df0e6a1 (diff) | |
parent | 7ae5285132db6c435e91ab097f41097217d68a2c (diff) | |
download | Qt-447f2b410335730cd172a76abce184bacae186d2.zip Qt-447f2b410335730cd172a76abce184bacae186d2.tar.gz Qt-447f2b410335730cd172a76abce184bacae186d2.tar.bz2 |
Merge branch '4.6-s60' into 4.7-s60
Conflicts:
src/3rdparty/phonon/qt7/mediaobject.mm
src/3rdparty/webkit/VERSION
src/3rdparty/webkit/WebCore/ChangeLog
src/plugins/phonon/mmf/mmf.pro
Diffstat (limited to 'src/multimedia/audio/qaudioinput_mac_p.cpp')
-rw-r--r-- | src/multimedia/audio/qaudioinput_mac_p.cpp | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/src/multimedia/audio/qaudioinput_mac_p.cpp b/src/multimedia/audio/qaudioinput_mac_p.cpp index b99fe11..5897e75 100644 --- a/src/multimedia/audio/qaudioinput_mac_p.cpp +++ b/src/multimedia/audio/qaudioinput_mac_p.cpp @@ -210,6 +210,11 @@ public: return true; } + bool empty() const + { + return position == totalPackets; + } + private: UInt32 totalPackets; UInt32 position; @@ -275,36 +280,32 @@ public: if (m_audioConverter != 0) { QAudioPacketFeeder feeder(m_inputBufferList); - bool wecan = true; int copied = 0; - const int available = m_buffer->free(); - while (err == noErr && wecan) { + while (err == noErr && !feeder.empty()) { QAudioRingBuffer::Region region = m_buffer->acquireWriteRegion(available); - if (region.second > 0) { - AudioBufferList output; - output.mNumberBuffers = 1; - output.mBuffers[0].mNumberChannels = 1; - output.mBuffers[0].mDataByteSize = region.second; - output.mBuffers[0].mData = region.first; - - UInt32 packetSize = region.second / m_outputFormat.mBytesPerPacket; - err = AudioConverterFillComplexBuffer(m_audioConverter, - converterCallback, - &feeder, - &packetSize, - &output, - 0); - - region.second = output.mBuffers[0].mDataByteSize; - copied += region.second; + if (region.second == 0) + break; + + AudioBufferList output; + output.mNumberBuffers = 1; + output.mBuffers[0].mNumberChannels = 1; + output.mBuffers[0].mDataByteSize = region.second; + output.mBuffers[0].mData = region.first; + + UInt32 packetSize = region.second / m_outputFormat.mBytesPerPacket; + err = AudioConverterFillComplexBuffer(m_audioConverter, + converterCallback, + &feeder, + &packetSize, + &output, + 0); + region.second = output.mBuffers[0].mDataByteSize; + copied += region.second; - m_buffer->releaseWriteRegion(region); - } - else - wecan = false; + m_buffer->releaseWriteRegion(region); } framesRendered += copied / m_outputFormat.mBytesPerFrame; |