aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-10-06 09:19:22 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-10-06 09:19:22 +0000
commitbc396c60b77202a84e2d76572bc18b6b53bf7959 (patch)
tree30d25255cd2426b7b0d8c96b13f19fcbcc72d1db /src
parent693c9dbf101afa6d2a5d061836b62453654bbf17 (diff)
downloadqmmp-bc396c60b77202a84e2d76572bc18b6b53bf7959.tar.gz
qmmp-bc396c60b77202a84e2d76572bc18b6b53bf7959.tar.bz2
qmmp-bc396c60b77202a84e2d76572bc18b6b53bf7959.zip
added previous api support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4537 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Input/Input.pro28
-rw-r--r--src/qmmp/channelmap.cpp89
-rw-r--r--src/qmmp/channelmap.h2
-rw-r--r--src/qmmp/decoder.cpp6
-rw-r--r--src/qmmp/decoder.h2
5 files changed, 103 insertions, 24 deletions
diff --git a/src/plugins/Input/Input.pro b/src/plugins/Input/Input.pro
index e7436688a..1b903e9d3 100644
--- a/src/plugins/Input/Input.pro
+++ b/src/plugins/Input/Input.pro
@@ -1,53 +1,53 @@
include(../../../qmmp.pri)
TEMPLATE = subdirs
-SUBDIRS += mad vorbis #cue sndfile wavpack
+SUBDIRS += mad vorbis cue sndfile wavpack
contains(CONFIG, FLAC_PLUGIN){
SUBDIRS += flac
}
contains(CONFIG, MUSEPACK_PLUGIN){
-# SUBDIRS += mpc
+ SUBDIRS += mpc
}
contains(CONFIG, MODPLUG_PLUGIN){
-# SUBDIRS += modplug
+ SUBDIRS += modplug
}
contains(CONFIG, FFMPEG_PLUGIN){
-# contains(CONFIG, FFMPEG_LEGACY){
-# SUBDIRS += ffmpeg_legacy
-# }else{
-# SUBDIRS += ffmpeg
-# }
+ contains(CONFIG, FFMPEG_LEGACY){
+ SUBDIRS += ffmpeg_legacy
+ }else{
+ SUBDIRS += ffmpeg
+ }
}
contains(CONFIG, GME_PLUGIN){
-# SUBDIRS += gme
+ SUBDIRS += gme
}
contains(CONFIG, OPUS_PLUGIN){
-# SUBDIRS += opus
+ SUBDIRS += opus
}
contains(CONFIG, CDAUDIO_PLUGIN){
-# SUBDIRS += cdaudio
+ SUBDIRS += cdaudio
}
contains(CONFIG, SID_PLUGIN){
-# SUBDIRS += sid
+ SUBDIRS += sid
}
unix{
contains(CONFIG, AAC_PLUGIN){
-# SUBDIRS += aac
+ SUBDIRS += aac
}
contains(CONFIG, WILDMIDI_PLUGIN){
-# SUBDIRS += wildmidi
+ SUBDIRS += wildmidi
}
diff --git a/src/qmmp/channelmap.cpp b/src/qmmp/channelmap.cpp
index 34fdde17a..24e90c1ce 100644
--- a/src/qmmp/channelmap.cpp
+++ b/src/qmmp/channelmap.cpp
@@ -23,18 +23,18 @@
#include "channelmap.h"
Qmmp::ChannelPosition ChannelMap::m_internal_map[9] = { Qmmp::CHAN_FRONT_LEFT,
- Qmmp::CHAN_FRONT_RIGHT,
- Qmmp::CHAN_REAR_LEFT,
- Qmmp::CHAN_REAR_RIGHT,
- Qmmp::CHAN_FRONT_CENTER,
- Qmmp::CHAN_REAR_CENTER,
- Qmmp::CHAN_LFE,
- Qmmp::CHAN_SIDE_LEFT,
- Qmmp::CHAN_SIDE_RIGHT,
- };
+ Qmmp::CHAN_FRONT_RIGHT,
+ Qmmp::CHAN_REAR_LEFT,
+ Qmmp::CHAN_REAR_RIGHT,
+ Qmmp::CHAN_FRONT_CENTER,
+ Qmmp::CHAN_REAR_CENTER,
+ Qmmp::CHAN_LFE,
+ Qmmp::CHAN_SIDE_LEFT,
+ Qmmp::CHAN_SIDE_RIGHT };
-ChannelMap::ChannelMap()
+ChannelMap::ChannelMap(int channels)
{
+ generateMap(channels);
}
int ChannelMap::mask() const
@@ -84,3 +84,72 @@ const QString ChannelMap::toString() const
}
return list.join(",");
}
+
+void ChannelMap::generateMap(int channels)
+{
+ int mask = 0;
+
+ switch (channels)
+ {
+ case 1:
+ mask = Qmmp::CHAN_FRONT_LEFT;
+ break;
+ case 2:
+ mask = Qmmp::CHAN_FRONT_LEFT
+ | Qmmp::CHAN_FRONT_RIGHT;
+ break;
+ case 3:
+ mask = Qmmp::CHAN_FRONT_LEFT
+ | Qmmp::CHAN_FRONT_RIGHT
+ | Qmmp::CHAN_FRONT_CENTER;
+ break;
+ case 4:
+ mask = Qmmp::CHAN_FRONT_LEFT
+ | Qmmp::CHAN_FRONT_RIGHT
+ | Qmmp::CHAN_REAR_LEFT
+ | Qmmp::CHAN_REAR_RIGHT;
+ break;
+ case 5:
+ mask = Qmmp::CHAN_FRONT_LEFT
+ | Qmmp::CHAN_FRONT_RIGHT
+ | Qmmp::CHAN_FRONT_CENTER
+ | Qmmp::CHAN_REAR_LEFT
+ | Qmmp::CHAN_REAR_RIGHT;
+ break;
+ case 6:
+ mask = Qmmp::CHAN_FRONT_LEFT
+ | Qmmp::CHAN_FRONT_RIGHT
+ | Qmmp::CHAN_FRONT_CENTER
+ | Qmmp::CHAN_LFE
+ | Qmmp::CHAN_REAR_LEFT
+ | Qmmp::CHAN_REAR_RIGHT;
+ break;
+ case 7:
+ mask = Qmmp::CHAN_FRONT_LEFT
+ | Qmmp::CHAN_FRONT_RIGHT
+ | Qmmp::CHAN_FRONT_CENTER
+ | Qmmp::CHAN_LFE
+ | Qmmp::CHAN_REAR_CENTER
+ | Qmmp::CHAN_SIDE_LEFT
+ | Qmmp::CHAN_SIDE_RIGHT;
+ break;
+ case 8:
+ mask = Qmmp::CHAN_FRONT_LEFT
+ | Qmmp::CHAN_FRONT_RIGHT
+ | Qmmp::CHAN_FRONT_CENTER
+ | Qmmp::CHAN_LFE
+ | Qmmp::CHAN_REAR_LEFT
+ | Qmmp::CHAN_REAR_RIGHT
+ | Qmmp::CHAN_SIDE_LEFT
+ | Qmmp::CHAN_SIDE_RIGHT;
+ break;
+ default:
+ ;
+ }
+
+ for(int i = 0; i < 9; ++i)
+ {
+ if(mask & m_internal_map[i])
+ append(m_internal_map[i]);
+ }
+}
diff --git a/src/qmmp/channelmap.h b/src/qmmp/channelmap.h
index 19196b8f5..def4e4a57 100644
--- a/src/qmmp/channelmap.h
+++ b/src/qmmp/channelmap.h
@@ -28,6 +28,7 @@ class ChannelMap : public QList<Qmmp::ChannelPosition>
{
public:
ChannelMap();
+ ChannelMap(int channels);
int mask() const;
const ChannelMap remaped() const;
@@ -35,6 +36,7 @@ public:
private:
static Qmmp::ChannelPosition m_internal_map[9];
+ void generateMap(int channels);
};
#endif // CHANNELMAP_H
diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp
index 1aa9fc4de..2733f5555 100644
--- a/src/qmmp/decoder.cpp
+++ b/src/qmmp/decoder.cpp
@@ -38,6 +38,12 @@ void Decoder::configure(quint32 srate, const ChannelMap &map, Qmmp::AudioFormat
m_parameters = AudioParameters(srate, map, format);
}
+void Decoder::configure(quint32 srate, int channels, Qmmp::AudioFormat f)
+{
+ qDebug("Decoder: using internal channel order");
+ m_parameters = AudioParameters(srate, ChannelMap(channels), f);
+}
+
qint64 Decoder::read(float *data, qint64 samples)
{
Q_UNUSED(data);
diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h
index 8e76f3a93..38c65967c 100644
--- a/src/qmmp/decoder.h
+++ b/src/qmmp/decoder.h
@@ -180,6 +180,8 @@ protected:
*/
void configure(quint32 srate, const ChannelMap &map, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
+ void configure(quint32 srate, int channels, Qmmp::AudioFormat f = Qmmp::PCM_S16LE);
+
private:
static void loadPlugins();
static DecoderFactory *m_lastFactory;