diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-10-06 09:19:22 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-10-06 09:19:22 +0000 |
| commit | bc396c60b77202a84e2d76572bc18b6b53bf7959 (patch) | |
| tree | 30d25255cd2426b7b0d8c96b13f19fcbcc72d1db /src | |
| parent | 693c9dbf101afa6d2a5d061836b62453654bbf17 (diff) | |
| download | qmmp-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.pro | 28 | ||||
| -rw-r--r-- | src/qmmp/channelmap.cpp | 89 | ||||
| -rw-r--r-- | src/qmmp/channelmap.h | 2 | ||||
| -rw-r--r-- | src/qmmp/decoder.cpp | 6 | ||||
| -rw-r--r-- | src/qmmp/decoder.h | 2 |
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; |
