diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-06-05 09:42:19 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-06-05 09:42:19 +0000 |
| commit | dcac31a0d387183d60dd067c5d5de30e8422b724 (patch) | |
| tree | 87b2f0757245761856042c918edff10fbbb5931f | |
| parent | 23db4d2b8a08af2a5de2267b9e582a7ab199eed9 (diff) | |
| download | qmmp-dcac31a0d387183d60dd067c5d5de30e8422b724.tar.gz qmmp-dcac31a0d387183d60dd067c5d5de30e8422b724.tar.bz2 qmmp-dcac31a0d387183d60dd067c5d5de30e8422b724.zip | |
added mime type support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1766 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Transports/http/httpinputsource.cpp | 5 | ||||
| -rw-r--r-- | src/plugins/Transports/http/httpinputsource.h | 1 | ||||
| -rw-r--r-- | src/plugins/Transports/http/streamreader.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Transports/http/streamreader.h | 2 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/downloader.cpp | 5 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/downloader.h | 1 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/mmsinputsource.cpp | 5 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/mmsinputsource.h | 1 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/streamreader.cpp | 9 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/streamreader.h | 4 | ||||
| -rw-r--r-- | src/qmmp/decoder.cpp | 2 | ||||
| -rw-r--r-- | src/qmmp/inputsource.cpp | 5 | ||||
| -rw-r--r-- | src/qmmp/inputsource.h | 4 | ||||
| -rw-r--r-- | src/qmmp/qmmpaudioengine.cpp | 3 |
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) |
