summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/multimedia/playback/qplaylistfileparser.cpp33
-rw-r--r--src/multimedia/playback/qplaylistfileparser_p.h2
-rw-r--r--src/plugins/directshow/player/directshowplayerservice.cpp11
-rw-r--r--src/plugins/directshow/player/directshowplayerservice.h1
-rw-r--r--src/plugins/wmf/decoder/mfaudiodecodercontrol.cpp6
-rw-r--r--src/plugins/wmf/player/mfplayersession.cpp6
-rw-r--r--src/plugins/wmf/sourceresolver.cpp10
-rw-r--r--src/plugins/wmf/sourceresolver.h2
8 files changed, 25 insertions, 46 deletions
diff --git a/src/multimedia/playback/qplaylistfileparser.cpp b/src/multimedia/playback/qplaylistfileparser.cpp
index 0d33f040d..49c417085 100644
--- a/src/multimedia/playback/qplaylistfileparser.cpp
+++ b/src/multimedia/playback/qplaylistfileparser.cpp
@@ -299,9 +299,10 @@ public:
struct ParserJob
{
QIODevice *m_stream;
- QMediaResource m_resource;
- bool isValid() const { return m_stream || !m_resource.isNull(); }
- void reset() { m_stream = 0; m_resource = QMediaResource(); }
+ QMediaContent m_media;
+ QString m_mimeType;
+ bool isValid() const { return m_stream || !m_media.isNull(); }
+ void reset() { m_stream = 0; m_media = QMediaContent(); m_mimeType = QString(); }
} m_pendingJob;
int m_scanIndex;
int m_lineIndex;
@@ -498,22 +499,12 @@ QPlaylistFileParser::FileType QPlaylistFileParser::findPlaylistType(const QStrin
/*
* Delegating
*/
-void QPlaylistFileParser::start(const QMediaContent &media, QIODevice *stream)
+void QPlaylistFileParser::start(const QMediaContent &media, QIODevice *stream, const QString &mimeType)
{
- const QMediaResource &mediaResource = media.canonicalResource();
- const QString &mimeType = mediaResource.mimeType();
-
- if (stream) {
- start(stream, mediaResource.mimeType());
- } else {
- const QNetworkRequest &request = mediaResource.request();
- const QUrl &url = mediaResource.url();
-
- if (request.url().isValid())
- start(request, mimeType);
- else
- start(QNetworkRequest(url), mimeType);
- }
+ if (stream)
+ start(stream, mimeType);
+ else
+ start(media.canonicalRequest(), mimeType);
}
void QPlaylistFileParser::start(QIODevice *stream, const QString &mimeType)
@@ -528,7 +519,7 @@ void QPlaylistFileParser::start(QIODevice *stream, const QString &mimeType)
if (!d->m_currentParser.isNull()) {
abort();
- d->m_pendingJob = { stream, QMediaResource(QUrl(), mimeType) };
+ d->m_pendingJob = { stream, QUrl(), mimeType };
return;
}
@@ -551,7 +542,7 @@ void QPlaylistFileParser::start(const QNetworkRequest& request, const QString &m
if (!d->m_currentParser.isNull()) {
abort();
- d->m_pendingJob = { nullptr, QMediaResource(request, mimeType) };
+ d->m_pendingJob = { nullptr, request, mimeType };
return;
}
@@ -604,7 +595,7 @@ void QPlaylistFileParserPrivate::handleParserFinished()
m_source.reset();
if (m_pendingJob.isValid())
- q->start(m_pendingJob.m_resource, m_pendingJob.m_stream);
+ q->start(m_pendingJob.m_media, m_pendingJob.m_stream, m_pendingJob.m_mimeType);
}
void QPlaylistFileParserPrivate::abort()
diff --git a/src/multimedia/playback/qplaylistfileparser_p.h b/src/multimedia/playback/qplaylistfileparser_p.h
index 927dbb739..328ecf998 100644
--- a/src/multimedia/playback/qplaylistfileparser_p.h
+++ b/src/multimedia/playback/qplaylistfileparser_p.h
@@ -86,7 +86,7 @@ public:
NetworkError
};
- void start(const QMediaContent &media, QIODevice *stream = 0);
+ void start(const QMediaContent &media, QIODevice *stream = 0, const QString &mimeType = QString());
void start(const QNetworkRequest &request, const QString &mimeType = QString());
void abort();
diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp
index 63635b059..abbbd4b49 100644
--- a/src/plugins/directshow/player/directshowplayerservice.cpp
+++ b/src/plugins/directshow/player/directshowplayerservice.cpp
@@ -297,7 +297,7 @@ void DirectShowPlayerService::load(const QMediaContent &media, QIODevice *stream
if (m_graph)
releaseGraph();
- m_resources = media.resources();
+ m_url = media.canonicalUrl();
m_stream = stream;
m_error = QMediaPlayer::NoError;
m_errorString = QString();
@@ -312,11 +312,9 @@ void DirectShowPlayerService::load(const QMediaContent &media, QIODevice *stream
m_dontCacheNextSeekResult = false;
m_metaDataControl->reset();
- if (m_resources.isEmpty() && !stream) {
+ if (m_url.isEmpty() && !stream) {
m_pendingTasks = 0;
m_graphStatus = NoMedia;
-
- m_url.clear();
} else if (stream && (!stream->isReadable() || stream->isSequential())) {
m_pendingTasks = 0;
m_graphStatus = InvalidMedia;
@@ -348,9 +346,6 @@ void DirectShowPlayerService::doSetUrlSource(QMutexLocker *locker)
{
IBaseFilter *source = 0;
- QMediaResource resource = m_resources.takeFirst();
- m_url = resource.url();
-
HRESULT hr = E_FAIL;
if (m_url.scheme() == QLatin1String("http") || m_url.scheme() == QLatin1String("https")) {
static const GUID clsid_WMAsfReader = {
@@ -403,7 +398,7 @@ void DirectShowPlayerService::doSetUrlSource(QMutexLocker *locker)
m_pendingTasks |= SetRate;
m_source = source;
- } else if (!m_resources.isEmpty()) {
+ } else if (!m_url.isEmpty()) {
m_pendingTasks |= SetUrlSource;
} else {
m_graphStatus = InvalidMedia;
diff --git a/src/plugins/directshow/player/directshowplayerservice.h b/src/plugins/directshow/player/directshowplayerservice.h
index 01d05449e..de71a6fdf 100644
--- a/src/plugins/directshow/player/directshowplayerservice.h
+++ b/src/plugins/directshow/player/directshowplayerservice.h
@@ -224,7 +224,6 @@ private:
qint64 m_duration;
QMediaTimeRange m_playbackRange;
QUrl m_url;
- QMediaResourceList m_resources;
QString m_errorString;
QMutex m_mutex;
bool m_buffering;
diff --git a/src/plugins/wmf/decoder/mfaudiodecodercontrol.cpp b/src/plugins/wmf/decoder/mfaudiodecodercontrol.cpp
index 438c2aae0..c0eada324 100644
--- a/src/plugins/wmf/decoder/mfaudiodecodercontrol.cpp
+++ b/src/plugins/wmf/decoder/mfaudiodecodercontrol.cpp
@@ -124,14 +124,12 @@ void MFAudioDecoderControl::setSourceFilename(const QString &fileName)
m_sourceFilename = fileName;
if (!m_sourceFilename.isEmpty()) {
m_sourceResolver->shutdown();
- QMediaResourceList rl;
QUrl url;
if (m_sourceFilename.startsWith(':'))
url = QUrl(QStringLiteral("qrc%1").arg(m_sourceFilename));
else
url = QUrl::fromLocalFile(m_sourceFilename);
- rl.push_back(QMediaResource(url));
- m_sourceResolver->load(rl, 0);
+ m_sourceResolver->load(url, 0);
m_loadingSource = true;
} else {
onSourceCleared();
@@ -155,7 +153,7 @@ void MFAudioDecoderControl::setSourceDevice(QIODevice *device)
m_device = device;
if (m_device) {
m_sourceResolver->shutdown();
- m_sourceResolver->load(QMediaResourceList(), m_device);
+ m_sourceResolver->load(QUrl(), m_device);
m_loadingSource = true;
} else {
onSourceCleared();
diff --git a/src/plugins/wmf/player/mfplayersession.cpp b/src/plugins/wmf/player/mfplayersession.cpp
index 3219936a7..9f909252d 100644
--- a/src/plugins/wmf/player/mfplayersession.cpp
+++ b/src/plugins/wmf/player/mfplayersession.cpp
@@ -197,12 +197,12 @@ void MFPlayerSession::load(const QMediaContent &media, QIODevice *stream)
qDebug() << "load";
#endif
clear();
- QMediaResourceList resources = media.resources();
+ QUrl url = media.canonicalUrl();
if (m_status == QMediaPlayer::LoadingMedia && m_sourceResolver)
m_sourceResolver->cancel();
- if (resources.isEmpty() && !stream) {
+ if (url.isEmpty() && !stream) {
changeStatus(QMediaPlayer::NoMedia);
} else if (stream && (!stream->isReadable())) {
changeStatus(QMediaPlayer::InvalidMedia);
@@ -210,7 +210,7 @@ void MFPlayerSession::load(const QMediaContent &media, QIODevice *stream)
} else {
createSession();
changeStatus(QMediaPlayer::LoadingMedia);
- m_sourceResolver->load(resources, stream);
+ m_sourceResolver->load(url, stream);
}
emit positionChanged(position());
}
diff --git a/src/plugins/wmf/sourceresolver.cpp b/src/plugins/wmf/sourceresolver.cpp
index 83949c976..c6f4e8566 100644
--- a/src/plugins/wmf/sourceresolver.cpp
+++ b/src/plugins/wmf/sourceresolver.cpp
@@ -158,7 +158,7 @@ HRESULT STDMETHODCALLTYPE SourceResolver::GetParameters(DWORD*, DWORD*)
return E_NOTIMPL;
}
-void SourceResolver::load(const QMediaResourceList &resources, QIODevice* stream)
+void SourceResolver::load(const QUrl &url, QIODevice* stream)
{
QMutexLocker locker(&m_mutex);
HRESULT hr = S_OK;
@@ -174,12 +174,10 @@ void SourceResolver::load(const QMediaResourceList &resources, QIODevice* stream
qWarning() << "Failed to create Source Resolver!";
emit error(hr);
} else if (stream) {
- QString url;
- if (!resources.isEmpty())
- url = resources.constFirst().url().toString();
+ QString urlString = url.toString();
m_stream = new MFStream(stream, false);
hr = m_sourceResolver->BeginCreateObjectFromByteStream(
- m_stream, url.isEmpty() ? 0 : reinterpret_cast<LPCWSTR>(url.utf16()),
+ m_stream, urlString.isEmpty() ? 0 : reinterpret_cast<LPCWSTR>(urlString.utf16()),
MF_RESOLUTION_MEDIASOURCE | MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE
, NULL, &m_cancelCookie, this, new State(m_sourceResolver, true));
if (FAILED(hr)) {
@@ -187,8 +185,6 @@ void SourceResolver::load(const QMediaResourceList &resources, QIODevice* stream
emit error(hr);
}
} else {
- QMediaResource resource = resources.constFirst();
- QUrl url = resource.url();
#ifdef DEBUG_MEDIAFOUNDATION
qDebug() << "loading :" << url;
qDebug() << "url path =" << url.path().mid(1);
diff --git a/src/plugins/wmf/sourceresolver.h b/src/plugins/wmf/sourceresolver.h
index 387f59739..aa104a60e 100644
--- a/src/plugins/wmf/sourceresolver.h
+++ b/src/plugins/wmf/sourceresolver.h
@@ -59,7 +59,7 @@ public:
HRESULT STDMETHODCALLTYPE GetParameters(DWORD*, DWORD*);
- void load(const QMediaResourceList &resources, QIODevice* stream);
+ void load(const QUrl &url, QIODevice* stream);
void cancel();