diff options
Diffstat (limited to 'src/plugins/Input/wavpack/decoderwavpackfactory.cpp')
| -rw-r--r-- | src/plugins/Input/wavpack/decoderwavpackfactory.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/plugins/Input/wavpack/decoderwavpackfactory.cpp b/src/plugins/Input/wavpack/decoderwavpackfactory.cpp index 45a6bfaed..e8b6acf31 100644 --- a/src/plugins/Input/wavpack/decoderwavpackfactory.cpp +++ b/src/plugins/Input/wavpack/decoderwavpackfactory.cpp @@ -64,6 +64,27 @@ QList<FileInfo *> DecoderWavPackFactory::createPlayList(const QString &fileName, char err[80]; int cue_len=0; FileInfo *info; + //extract metadata of one cue track + if(fileName.contains("://")) + { + QString path = QUrl(fileName).path(); + path.replace(QString(QUrl::toPercentEncoding("#")), "#"); + path.replace(QString(QUrl::toPercentEncoding("?")), "?"); + path.replace(QString(QUrl::toPercentEncoding("%")), "%"); + path.replace(QString(QUrl::toPercentEncoding(":")), ":"); + int track = fileName.section("#", -1).toInt(); + list = createPlayList(path, true); + if (list.isEmpty() || track <= 0 || track > list.count()) + { + qDeleteAll(list); + list.clear(); + return list; + } + FileInfo *info = list.takeAt(track - 1); + qDeleteAll(list); + return QList<FileInfo *>() << info; + } + WavpackContext *ctx = WavpackOpenFileInput (fileName.toLocal8Bit(), err, OPEN_WVC | OPEN_TAGS, 0); if (!ctx) { |
