From 72536fa39c71b32f963322a8aa0c1dee320102fc Mon Sep 17 00:00:00 2001 From: Val Doroshchuk Date: Wed, 15 Nov 2017 17:03:17 +0100 Subject: Do not use QMediaResource internally Removed usage of QMediaResource internally, since it is going to be deprecated. Task-number: QTBUG-28850 Change-Id: I476ae11ac58215aa4df4a76abb0cec3aa44f206a Reviewed-by: Christian Stromme --- src/multimedia/playback/qplaylistfileparser.cpp | 33 ++++++++-------------- src/multimedia/playback/qplaylistfileparser_p.h | 2 +- .../directshow/player/directshowplayerservice.cpp | 11 ++------ .../directshow/player/directshowplayerservice.h | 1 - src/plugins/wmf/decoder/mfaudiodecodercontrol.cpp | 6 ++-- src/plugins/wmf/player/mfplayersession.cpp | 6 ++-- src/plugins/wmf/sourceresolver.cpp | 10 ++----- src/plugins/wmf/sourceresolver.h | 2 +- 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(url.utf16()), + m_stream, urlString.isEmpty() ? 0 : reinterpret_cast(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(); -- cgit v1.2.3