aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/wavpack
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Input/wavpack')
-rw-r--r--src/plugins/Input/wavpack/decoderwavpackfactory.cpp21
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)
{