aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/Transports/http/httpinputsource.cpp5
-rw-r--r--src/plugins/Transports/http/httpinputsource.h1
-rw-r--r--src/plugins/Transports/http/streamreader.cpp2
-rw-r--r--src/plugins/Transports/http/streamreader.h2
-rw-r--r--src/plugins/Transports/mms/downloader.cpp5
-rw-r--r--src/plugins/Transports/mms/downloader.h1
-rw-r--r--src/plugins/Transports/mms/mmsinputsource.cpp5
-rw-r--r--src/plugins/Transports/mms/mmsinputsource.h1
-rw-r--r--src/plugins/Transports/mms/streamreader.cpp9
-rw-r--r--src/plugins/Transports/mms/streamreader.h4
-rw-r--r--src/qmmp/decoder.cpp2
-rw-r--r--src/qmmp/inputsource.cpp5
-rw-r--r--src/qmmp/inputsource.h4
-rw-r--r--src/qmmp/qmmpaudioengine.cpp3
14 files changed, 27 insertions, 22 deletions
diff --git a/src/plugins/Transports/http/httpinputsource.cpp b/src/plugins/Transports/http/httpinputsource.cpp
index 3493c5f6c..a28730ef9 100644
--- a/src/plugins/Transports/http/httpinputsource.cpp
+++ b/src/plugins/Transports/http/httpinputsource.cpp
@@ -43,6 +43,11 @@ bool HTTPInputSource::isReady()
return m_reader->isOpen();
}
+QString HTTPInputSource::contentType() const
+{
+ return m_reader->contentType();
+}
+
void HTTPInputSource::open()
{
m_reader->open(QIODevice::ReadOnly);
diff --git a/src/plugins/Transports/http/httpinputsource.h b/src/plugins/Transports/http/httpinputsource.h
index 2c4d32f89..8032714a1 100644
--- a/src/plugins/Transports/http/httpinputsource.h
+++ b/src/plugins/Transports/http/httpinputsource.h
@@ -37,6 +37,7 @@ public:
QIODevice *ioDevice();
bool initialize();
bool isReady();
+ QString contentType() const;
private slots:
void open();
diff --git a/src/plugins/Transports/http/streamreader.cpp b/src/plugins/Transports/http/streamreader.cpp
index d1fe6d84a..1d482259a 100644
--- a/src/plugins/Transports/http/streamreader.cpp
+++ b/src/plugins/Transports/http/streamreader.cpp
@@ -123,7 +123,7 @@ void StreamReader::downloadFile()
m_downloader->start();
}
-const QString &StreamReader::contentType()
+QString StreamReader::contentType()
{
m_downloader->mutex()->lock ();
m_contentType = m_downloader->contentType();
diff --git a/src/plugins/Transports/http/streamreader.h b/src/plugins/Transports/http/streamreader.h
index 4a8fcb169..3aa02c0e9 100644
--- a/src/plugins/Transports/http/streamreader.h
+++ b/src/plugins/Transports/http/streamreader.h
@@ -59,7 +59,7 @@ public:
/**
* returns content type of a stream
*/
- const QString &contentType();
+ QString contentType();
void downloadFile();
signals:
diff --git a/src/plugins/Transports/mms/downloader.cpp b/src/plugins/Transports/mms/downloader.cpp
index b0451a38e..a3c1abd5a 100644
--- a/src/plugins/Transports/mms/downloader.cpp
+++ b/src/plugins/Transports/mms/downloader.cpp
@@ -71,11 +71,6 @@ QMutex *Downloader::mutex()
return &m_mutex;
}
-QString Downloader::contentType()
-{
- return "audio/x-ms-wma";
-}
-
void Downloader::abort()
{
m_mutex.lock();
diff --git a/src/plugins/Transports/mms/downloader.h b/src/plugins/Transports/mms/downloader.h
index ba4971630..0a6d237a9 100644
--- a/src/plugins/Transports/mms/downloader.h
+++ b/src/plugins/Transports/mms/downloader.h
@@ -43,7 +43,6 @@ public:
qint64 read(char* data, qint64 maxlen);
QMutex *mutex();
- QString contentType();
void abort();
qint64 bytesAvailable();
void checkBuffer();
diff --git a/src/plugins/Transports/mms/mmsinputsource.cpp b/src/plugins/Transports/mms/mmsinputsource.cpp
index 07328e051..a8120899f 100644
--- a/src/plugins/Transports/mms/mmsinputsource.cpp
+++ b/src/plugins/Transports/mms/mmsinputsource.cpp
@@ -43,6 +43,11 @@ bool MMSInputSource::isReady()
return m_reader->isOpen();
}
+QString MMSInputSource::contentType() const
+{
+ return "audio/x-ms-wma";
+}
+
void MMSInputSource::open()
{
m_reader->open(QIODevice::ReadOnly);
diff --git a/src/plugins/Transports/mms/mmsinputsource.h b/src/plugins/Transports/mms/mmsinputsource.h
index 20509c8c2..d8695b7c2 100644
--- a/src/plugins/Transports/mms/mmsinputsource.h
+++ b/src/plugins/Transports/mms/mmsinputsource.h
@@ -37,6 +37,7 @@ public:
QIODevice *ioDevice();
bool initialize();
bool isReady();
+ QString contentType() const;
private slots:
void open();
diff --git a/src/plugins/Transports/mms/streamreader.cpp b/src/plugins/Transports/mms/streamreader.cpp
index 4210958ab..ca99d7991 100644
--- a/src/plugins/Transports/mms/streamreader.cpp
+++ b/src/plugins/Transports/mms/streamreader.cpp
@@ -123,12 +123,3 @@ void StreamReader::downloadFile()
m_downloader->start();
}
-const QString &StreamReader::contentType()
-{
- m_downloader->mutex()->lock ();
- m_contentType = m_downloader->contentType();
- m_downloader->mutex()->unlock();
- qApp->processEvents();
- qDebug("StreamReader: content type: %s", qPrintable(m_contentType));
- return m_contentType;
-}
diff --git a/src/plugins/Transports/mms/streamreader.h b/src/plugins/Transports/mms/streamreader.h
index 8195126d1..1ada6aea5 100644
--- a/src/plugins/Transports/mms/streamreader.h
+++ b/src/plugins/Transports/mms/streamreader.h
@@ -56,10 +56,6 @@ public:
bool waitForBytesWritten ( int msecs );
bool waitForReadyRead ( int msecs );
- /**
- * returns content type of a stream
- */
- const QString &contentType();
void downloadFile();
signals:
diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp
index af633a7c1..6a0debc5b 100644
--- a/src/qmmp/decoder.cpp
+++ b/src/qmmp/decoder.cpp
@@ -140,6 +140,8 @@ DecoderFactory *Decoder::findByPath(const QString& source)
DecoderFactory *Decoder::findByMime(const QString& type)
{
+ if(type.isEmpty())
+ return 0;
checkFactories();
DecoderFactory *fact;
foreach(fact, *m_factories)
diff --git a/src/qmmp/inputsource.cpp b/src/qmmp/inputsource.cpp
index 885195398..912e3df87 100644
--- a/src/qmmp/inputsource.cpp
+++ b/src/qmmp/inputsource.cpp
@@ -34,6 +34,11 @@ InputSource::InputSource(const QString &source, QObject *parent) : QObject(paren
m_offset = -1;
}
+QString InputSource::contentType() const
+{
+ return QString();
+}
+
const QString InputSource::url() const
{
return m_url;
diff --git a/src/qmmp/inputsource.h b/src/qmmp/inputsource.h
index 9c708dbab..d6c98c5f4 100644
--- a/src/qmmp/inputsource.h
+++ b/src/qmmp/inputsource.h
@@ -55,6 +55,10 @@ public:
*/
virtual bool isReady() = 0;
/*!
+ * Returns content type of the input stream. Default implementation returns empty string.
+ */
+ virtual QString contentType() const;
+ /*!
* Returns input source path or url.
*/
const QString url() const;
diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp
index 34cafc8cb..ea84f7f75 100644
--- a/src/qmmp/qmmpaudioengine.cpp
+++ b/src/qmmp/qmmpaudioengine.cpp
@@ -113,9 +113,10 @@ bool QmmpAudioEngine::enqueue(InputSource *source)
if(!source->url().contains("://"))
factory = Decoder::findByPath(source->url());
+ if(!factory)
+ factory = Decoder::findByMime(source->contentType());
if(!factory && source->ioDevice())
factory = Decoder::findByContent(source->ioDevice());
- //TODO mimetype
if(!factory && source->url().contains("://"))
factory = Decoder::findByProtocol(source->url().section("://",0,0));
if(!factory)