diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-07-07 10:09:00 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-07-07 10:09:00 +0000 |
| commit | c0a9e456b6a935b67f2d3357a9cef7170cfee418 (patch) | |
| tree | b419f1f032772b04d6155a76efdfdec0a87d9d7f /src | |
| parent | 1608f90483f25e1c7e0761b7ddc3320287fef3ad (diff) | |
| download | qmmp-c0a9e456b6a935b67f2d3357a9cef7170cfee418.tar.gz qmmp-c0a9e456b6a935b67f2d3357a9cef7170cfee418.tar.bz2 qmmp-c0a9e456b6a935b67f2d3357a9cef7170cfee418.zip | |
fixed software volume
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@442 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmp/decoder.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp index d056145de..bd77408a5 100644 --- a/src/qmmp/decoder.cpp +++ b/src/qmmp/decoder.cpp @@ -59,7 +59,7 @@ static QStringList files; static void checkFactories() { QSettings settings ( QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat ); - + if (! factories) { files.clear(); @@ -247,7 +247,7 @@ void Decoder::setEnabled(DecoderFactory* factory, bool enable) bool Decoder::isEnabled(DecoderFactory* factory) { checkFactories(); - if(!factories->contains(factory)) + if (!factories->contains(factory)) return FALSE; QString name = files.at(factories->indexOf(factory)).section('/',-1); QSettings settings ( QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat ); @@ -414,10 +414,18 @@ void Decoder::changeVolume(char *data, ulong sz, int channels) { int r = pow( 10, (m_volR - 100)/40.0 ) * 256; int l = pow( 10, (m_volL - 100)/40.0 ) * 256; - for (ulong i = 0; i < sz/2; i+=2) + + if (channels > 1) + for (ulong i = 0; i < sz/2; i+=2) + { + ((short*)data)[i]*= r/256.0; + ((short*)data)[i+1]*= l/256.0; + } + else { - ((short*)data)[i]*= r/256.0; - ((short*)data)[i+1]*= l/256.0; + l = qMax(l,r); + for (ulong i = 0; i < sz/2; i++) + ((short*)data)[i]*= l/256.0; } } |
