diff options
Diffstat (limited to 'src/multimedia/platform/gstreamer/mediaplayer')
7 files changed, 3 insertions, 314 deletions
diff --git a/src/multimedia/platform/gstreamer/mediaplayer/mediaplayer.pri b/src/multimedia/platform/gstreamer/mediaplayer/mediaplayer.pri index 1a0d7cefc..1071b25a2 100644 --- a/src/multimedia/platform/gstreamer/mediaplayer/mediaplayer.pri +++ b/src/multimedia/platform/gstreamer/mediaplayer/mediaplayer.pri @@ -3,9 +3,7 @@ INCLUDEPATH += $$PWD HEADERS += \ $$PWD/qgstreamerplayerservice_p.h \ $$PWD/qgstreamerstreamscontrol_p.h \ - $$PWD/qgstreamermetadataprovider_p.h SOURCES += \ $$PWD/qgstreamerplayerservice.cpp \ $$PWD/qgstreamerstreamscontrol.cpp \ - $$PWD/qgstreamermetadataprovider.cpp diff --git a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp deleted file mode 100644 index 578bbb8db..000000000 --- a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qgstreamermetadataprovider_p.h" -#include <private/qgstreamerplayersession_p.h> -#include <QDebug> -#include <QtMultimedia/qmediametadata.h> - -#include <gst/gstversion.h> -#include <private/qgstutils_p.h> - -QT_BEGIN_NAMESPACE - -typedef QMap<QByteArray, QString> QGstreamerMetaDataKeyLookup; -Q_GLOBAL_STATIC(QGstreamerMetaDataKeyLookup, metadataKeys) - -static const QGstreamerMetaDataKeyLookup *qt_gstreamerMetaDataKeys() -{ - if (metadataKeys->isEmpty()) { - metadataKeys->insert(GST_TAG_TITLE, QMediaMetaData::Title); - //metadataKeys->insert(0, QMediaMetaData::SubTitle); - //metadataKeys->insert(0, QMediaMetaData::Author); - metadataKeys->insert(GST_TAG_COMMENT, QMediaMetaData::Comment); - metadataKeys->insert(GST_TAG_DESCRIPTION, QMediaMetaData::Description); - //metadataKeys->insert(0, QMediaMetaData::Category); - metadataKeys->insert(GST_TAG_GENRE, QMediaMetaData::Genre); - metadataKeys->insert("year", QMediaMetaData::Year); - //metadataKeys->insert(0, QMediaMetaData::UserRating); - - metadataKeys->insert(GST_TAG_LANGUAGE_CODE, QMediaMetaData::Language); - - metadataKeys->insert(GST_TAG_ORGANIZATION, QMediaMetaData::Publisher); - metadataKeys->insert(GST_TAG_COPYRIGHT, QMediaMetaData::Copyright); - //metadataKeys->insert(0, QMediaMetaData::ParentalRating); - //metadataKeys->insert(0, QMediaMetaData::RatingOrganisation); - - // Media - //metadataKeys->insert(0, QMediaMetaData::Size); - //metadataKeys->insert(0,QMediaMetaData::MediaType ); - metadataKeys->insert(GST_TAG_DURATION, QMediaMetaData::Duration); - - // Audio - metadataKeys->insert(GST_TAG_BITRATE, QMediaMetaData::AudioBitRate); - metadataKeys->insert(GST_TAG_AUDIO_CODEC, QMediaMetaData::AudioCodec); - //metadataKeys->insert(0, QMediaMetaData::ChannelCount); - //metadataKeys->insert(0, QMediaMetaData::SampleRate); - - // Music - metadataKeys->insert(GST_TAG_ALBUM, QMediaMetaData::AlbumTitle); - metadataKeys->insert(GST_TAG_ALBUM_ARTIST, QMediaMetaData::AlbumArtist); - metadataKeys->insert(GST_TAG_ARTIST, QMediaMetaData::ContributingArtist); - //metadataKeys->insert(0, QMediaMetaData::Conductor); - //metadataKeys->insert(0, QMediaMetaData::Lyrics); - //metadataKeys->insert(0, QMediaMetaData::Mood); - metadataKeys->insert(GST_TAG_TRACK_NUMBER, QMediaMetaData::TrackNumber); - - //metadataKeys->insert(0, QMediaMetaData::CoverArtUrlSmall); - //metadataKeys->insert(0, QMediaMetaData::CoverArtUrlLarge); - metadataKeys->insert(GST_TAG_PREVIEW_IMAGE, QMediaMetaData::ThumbnailImage); - metadataKeys->insert(GST_TAG_IMAGE, QMediaMetaData::CoverArtImage); - - // Image/Video - metadataKeys->insert("resolution", QMediaMetaData::Resolution); - metadataKeys->insert("pixel-aspect-ratio", QMediaMetaData::PixelAspectRatio); - metadataKeys->insert(GST_TAG_IMAGE_ORIENTATION, QMediaMetaData::Orientation); - - // Video - //metadataKeys->insert(0, QMediaMetaData::VideoFrameRate); - //metadataKeys->insert(0, QMediaMetaData::VideoBitRate); - metadataKeys->insert(GST_TAG_VIDEO_CODEC, QMediaMetaData::VideoCodec); - - //metadataKeys->insert(0, QMediaMetaData::PosterUrl); - - // Movie - //metadataKeys->insert(0, QMediaMetaData::ChapterNumber); - //metadataKeys->insert(0, QMediaMetaData::Director); - metadataKeys->insert(GST_TAG_PERFORMER, QMediaMetaData::LeadPerformer); - //metadataKeys->insert(0, QMediaMetaData::Writer); - - // Photos - //metadataKeys->insert(0, QMediaMetaData::CameraManufacturer); - //metadataKeys->insert(0, QMediaMetaData::CameraModel); - //metadataKeys->insert(0, QMediaMetaData::Event); - //metadataKeys->insert(0, QMediaMetaData::Subject); - } - - return metadataKeys; -} - -QGstreamerMetaDataProvider::QGstreamerMetaDataProvider(QGstreamerPlayerSession *session, QObject *parent) - :QMetaDataReaderControl(parent), m_session(session) -{ - connect(m_session, SIGNAL(tagsChanged()), SLOT(updateTags())); -} - -QGstreamerMetaDataProvider::~QGstreamerMetaDataProvider() -{ -} - -bool QGstreamerMetaDataProvider::isMetaDataAvailable() const -{ - return !m_session->tags().isEmpty(); -} - -bool QGstreamerMetaDataProvider::isWritable() const -{ - return false; -} - -QVariant QGstreamerMetaDataProvider::metaData(const QString &key) const -{ - if (key == QMediaMetaData::Orientation) - return QGstUtils::fromGStreamerOrientation(m_tags.value(key)); - return m_tags.value(key); -} - -QStringList QGstreamerMetaDataProvider::availableMetaData() const -{ - return m_tags.keys(); -} - -void QGstreamerMetaDataProvider::updateTags() -{ - QVariantMap oldTags = m_tags; - m_tags.clear(); - bool changed = false; - - const auto tags = m_session->tags(); - for (auto i = tags.cbegin(), end = tags.cend(); i != end; ++i) { - //use gstreamer native keys for elements not in our key map - QString key = qt_gstreamerMetaDataKeys()->value(i.key(), i.key()); - m_tags.insert(key, i.value()); - if (i.value() != oldTags.value(key)) { - changed = true; - emit metaDataChanged(key, i.value()); - } - } - - if (oldTags.isEmpty() != m_tags.isEmpty()) { - emit metaDataAvailableChanged(isMetaDataAvailable()); - changed = true; - } - - if (changed) - emit metaDataChanged(); -} - -QT_END_NAMESPACE diff --git a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamermetadataprovider_p.h b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamermetadataprovider_p.h deleted file mode 100644 index 468ab060b..000000000 --- a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamermetadataprovider_p.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QGSTREAMERMETADATAPROVIDER_H -#define QGSTREAMERMETADATAPROVIDER_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <qmetadatareadercontrol.h> -#include <qvariant.h> - -QT_BEGIN_NAMESPACE - -class QGstreamerPlayerSession; - -class QGstreamerMetaDataProvider : public QMetaDataReaderControl -{ - Q_OBJECT -public: - QGstreamerMetaDataProvider( QGstreamerPlayerSession *session, QObject *parent ); - virtual ~QGstreamerMetaDataProvider(); - - bool isMetaDataAvailable() const override; - bool isWritable() const; - - QVariant metaData(const QString &key) const override; - QStringList availableMetaData() const override; - -private slots: - void updateTags(); - -private: - QGstreamerPlayerSession *m_session = nullptr; - QVariantMap m_tags; -}; - -QT_END_NAMESPACE - -#endif // QGSTREAMERMETADATAPROVIDER_H diff --git a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice.cpp b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice.cpp index 6da43f03b..3a00d7673 100644 --- a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice.cpp +++ b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice.cpp @@ -43,7 +43,6 @@ #include "qgstreamerplayerservice_p.h" -#include "qgstreamermetadataprovider_p.h" #include <private/qgstreamervideowindow_p.h> #include <private/qgstreamervideorenderer_p.h> @@ -59,7 +58,6 @@ QGstreamerPlayerService::QGstreamerPlayerService() { m_session = new QGstreamerPlayerSession(this); m_control = new QGstreamerPlayerControl(m_session, this); - m_metaData = new QGstreamerMetaDataProvider(m_session, this); m_streamsControl = new QGstreamerStreamsControl(m_session,this); m_videoRenderer = new QGstreamerVideoRenderer(this); m_videoWindow = new QGstreamerVideoWindow(this); @@ -80,9 +78,6 @@ QObject *QGstreamerPlayerService::requestControl(const char *name) if (qstrcmp(name,QMediaPlayerControl_iid) == 0) return m_control; - if (qstrcmp(name,QMetaDataReaderControl_iid) == 0) - return m_metaData; - if (!m_videoOutput) { if (qstrcmp(name, QVideoRendererControl_iid) == 0) m_videoOutput = m_videoRenderer; @@ -116,11 +111,6 @@ QMediaPlayerControl *QGstreamerPlayerService::player() return m_control; } -QMetaDataReaderControl *QGstreamerPlayerService::dataReader() -{ - return m_metaData; -} - QMediaStreamsControl *QGstreamerPlayerService::streams() { return m_streamsControl; @@ -160,32 +150,4 @@ void QGstreamerPlayerService::decreaseVideoRef() m_videoReferenceCount--; } -#if 0 -// ### Re-add something similar to be able to check for support of certain file formats -QMultimedia::SupportEstimate QGstreamerPlayerServicePlugin::hasSupport(const QString &mimeType, - const QStringList &codecs) const -{ - if (m_supportedMimeTypeSet.isEmpty()) - updateSupportedMimeTypes(); - - return QGstUtils::hasSupport(mimeType, codecs, m_supportedMimeTypeSet); -} - -static bool isDecoderOrDemuxer(GstElementFactory *factory) -{ - return gst_element_factory_list_is_type(factory, GST_ELEMENT_FACTORY_TYPE_DEMUXER) - || gst_element_factory_list_is_type(factory, GST_ELEMENT_FACTORY_TYPE_DECODER); -} - -void QGstreamerPlayerServicePlugin::updateSupportedMimeTypes() const -{ - m_supportedMimeTypeSet = QGstUtils::supportedMimeTypes(isDecoderOrDemuxer); -} - -QStringList QGstreamerPlayerServicePlugin::supportedMimeTypes() const -{ - return QStringList(); -} -#endif - QT_END_NAMESPACE diff --git a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice_p.h b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice_p.h index 0a7663e51..52cd7f848 100644 --- a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice_p.h +++ b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerplayerservice_p.h @@ -62,7 +62,6 @@ class QMediaPlayerControl; class QGstreamerMetaData; class QGstreamerPlayerControl; class QGstreamerPlayerSession; -class QGstreamerMetaDataProvider; class QGstreamerStreamsControl; class QGstreamerVideoRenderer; class QGstreamerVideoWindow; @@ -81,7 +80,6 @@ public: // QMediaPlatformPlayerInterface QMediaPlayerControl *player() override; - QMetaDataReaderControl *dataReader() override; QMediaStreamsControl *streams() override; QVideoRendererControl *createVideoRenderer() override; @@ -90,7 +88,6 @@ public: private: QGstreamerPlayerControl *m_control = nullptr; QGstreamerPlayerSession *m_session = nullptr; - QGstreamerMetaDataProvider *m_metaData = nullptr; QGstreamerStreamsControl *m_streamsControl = nullptr; QObject *m_videoOutput = nullptr; diff --git a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerstreamscontrol.cpp b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerstreamscontrol.cpp index a4a2f46ec..4dc36fca4 100644 --- a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerstreamscontrol.cpp +++ b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerstreamscontrol.cpp @@ -60,9 +60,9 @@ QMediaStreamsControl::StreamType QGstreamerStreamsControl::streamType(int stream return m_session->streamType(streamNumber); } -QVariant QGstreamerStreamsControl::metaData(int streamNumber, const QString &key) +QMediaMetaData QGstreamerStreamsControl::metaData(int streamNumber) { - return m_session->streamProperties(streamNumber).value(key); + return m_session->streamProperties(streamNumber); } bool QGstreamerStreamsControl::isActive(int streamNumber) diff --git a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerstreamscontrol_p.h b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerstreamscontrol_p.h index 730dcba3a..57d57045a 100644 --- a/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerstreamscontrol_p.h +++ b/src/multimedia/platform/gstreamer/mediaplayer/qgstreamerstreamscontrol_p.h @@ -67,7 +67,7 @@ public: int streamCount() override; StreamType streamType(int streamNumber) override; - QVariant metaData(int streamNumber, const QString &key) override; + QMediaMetaData metaData(int streamNumber) override; bool isActive(int streamNumber) override; void setActive(int streamNumber, bool state) override; |