Git commit 583ef6078872fdc2ee621383d2909e34cbc0cdfd by Laszlo Papp. Committed on 01/12/2011 at 02:49. Pushed by lpapp into branch 'master'. Implement the alBufferData and format calculation operations in the context M +19 -2 src/qalcontext.cpp http://commits.kde.org/qtopenal/583ef6078872fdc2ee621383d2909e34cbc0cdfd diff --git a/src/qalcontext.cpp b/src/qalcontext.cpp index 20c50a4..4b092a4 100644 --- a/src/qalcontext.cpp +++ b/src/qalcontext.cpp @@ -189,9 +189,10 @@ QALContext::cacheBuffer(const QString& filename) = QByteArray decodedData; QByteArray tmpData; - int maxlen =3D qalSndAudioDecoder.channels() * qalSndAudioDecoder.= sampleRate() * qalSndAudioDecode.sampleSize(); + int maxlen =3D qalSndAudioDecoder.channels() * qalSndAudioDecoder.= sampleRate() * qalSndAudioDecoder.sampleSize(); = - while ((tmpData =3D qalSndAudioDecoder.decode(maxlen))) { + forever { + tmpData =3D qalSndAudioDecoder.decode(maxlen); decodedData.append(tmpData); if (tmpData.size() !=3D maxlen) break; @@ -209,7 +210,23 @@ QALContext::cacheBuffer(const QString& filename) return 0; }; = + int channels =3D qalSndAudioDecoder.channels(); + int sampleSize =3D qalSndAudioDecoder.sampleSize(); + ALenum format; + + if (channels =3D=3D 1) { + if (sampleSize =3D=3D 8) + format =3D AL_FORMAT_MONO8; + else if (sampleSize =3D=3D 16) + format =3D AL_FORMAT_MONO16; + } else if (channels =3D=3D 2) { + if (sampleSize =3D=3D 8) + format =3D AL_FORMAT_STEREO8; + else if (sampleSize =3D=3D 16) + format =3D AL_FORMAT_STEREO16; + } = + alBufferData(buffer, format, reinterpret_cast(decod= edData.constData()), decodedData.size(), qalSndAudioDecoder.sampleRate()); = d->loadedBuffers.insert(filename, buffer); }