summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergio Ahumada <sahumada@blackberry.com>2014-06-11 10:05:00 +0200
committerSergio Ahumada <sahumada@blackberry.com>2014-06-11 10:05:00 +0200
commit150ff6662de1312e3ba9d000895d80dd5805ea5b (patch)
tree6f9fc0289c329022551bcc54ff6279974c9599eb
parentd71aaca893a27a8a9a6712a59313300b87226a4f (diff)
parentb99a4b3025f08df8f33efb02897397ae5e404acf (diff)
Merge remote-tracking branch 'origin/stable' into 5.3
-rw-r--r--src/imports/multimedia/multimedia.cpp5
-rw-r--r--src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java15
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp2
-rw-r--r--src/plugins/directshow/player/directshowmetadatacontrol.cpp153
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinmetadata.cpp198
-rw-r--r--src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp182
-rw-r--r--src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp150
-rw-r--r--src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.h1
8 files changed, 353 insertions, 353 deletions
diff --git a/src/imports/multimedia/multimedia.cpp b/src/imports/multimedia/multimedia.cpp
index 94b697e85..5954db22c 100644
--- a/src/imports/multimedia/multimedia.cpp
+++ b/src/imports/multimedia/multimedia.cpp
@@ -95,6 +95,11 @@ public:
qmlRegisterUncreatableType<QDeclarativeCameraImageProcessing>(uri, 5, 0, "CameraImageProcessing",
trUtf8("CameraImageProcessing is provided by Camera"));
+ // Make types available for the 5.3 version
+ // Adding "import QtMultimedia 5.3" in QML will fail unless at least one type is registered
+ // for that version.
+ qmlRegisterType<QSoundEffect>(uri, 5, 3, "SoundEffect");
+
qmlRegisterType<QDeclarativeMediaMetaData>();
}
diff --git a/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java b/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java
index 32d3496ee..ff92af771 100644
--- a/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java
+++ b/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java
@@ -379,6 +379,7 @@ public class QtAndroidMediaPlayer
mMediaPlayer.setDisplay(mSurfaceHolder);
AssetFileDescriptor afd = null;
+ FileInputStream fis = null;
try {
mUri = Uri.parse(path);
final boolean inAssets = (mUri.getScheme().compareTo("assets") == 0);
@@ -390,8 +391,8 @@ public class QtAndroidMediaPlayer
final long length = afd.getLength();
FileDescriptor fd = afd.getFileDescriptor();
mMediaPlayer.setDataSource(fd, offset, length);
- } else if (mUri.getScheme().compareTo("tempfile") == 0) {
- FileInputStream fis = new FileInputStream(mUri.getPath());
+ } else if (mUri.getScheme().compareTo("file") == 0) {
+ fis = new FileInputStream(mUri.getPath());
FileDescriptor fd = fis.getFD();
mMediaPlayer.setDataSource(fd);
} else {
@@ -409,9 +410,13 @@ public class QtAndroidMediaPlayer
} catch (final NullPointerException e) {
Log.d(TAG, "" + e.getMessage());
} finally {
- if (afd !=null) {
- try { afd.close(); } catch (final IOException ioe) { /* Ignore... */ }
- }
+ try {
+ if (afd != null)
+ afd.close();
+ if (fis != null)
+ fis.close();
+ } catch (final IOException ioe) { /* Ignore... */ }
+
if ((mState & State.Initialized) == 0) {
setState(State.Error);
onErrorNative(MediaPlayer.MEDIA_ERROR_UNKNOWN,
diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
index 6565b0545..6817d65b0 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
+++ b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
@@ -312,7 +312,7 @@ void QAndroidMediaPlayerControl::setMedia(const QMediaContent &mediaContent,
const QString path = url.toString().mid(3);
mTempFile.reset(QTemporaryFile::createNativeFile(path));
if (!mTempFile.isNull())
- mediaPath = QLatin1String("tempfile://") + mTempFile->fileName();
+ mediaPath = QStringLiteral("file://") + mTempFile->fileName();
} else {
mediaPath = url.toString();
}
diff --git a/src/plugins/directshow/player/directshowmetadatacontrol.cpp b/src/plugins/directshow/player/directshowmetadatacontrol.cpp
index 51d9574ba..96c9fab8b 100644
--- a/src/plugins/directshow/player/directshowmetadatacontrol.cpp
+++ b/src/plugins/directshow/player/directshowmetadatacontrol.cpp
@@ -104,75 +104,85 @@ static q_SHCreateItemFromParsingName sHCreateItemFromParsingName = 0;
#endif
#ifndef QT_NO_WMSDK
+
namespace
{
- struct QWMMetaDataKeyLookup
+ struct QWMMetaDataKey
{
- QString key;
- const wchar_t *token;
+ QString qtName;
+ const wchar_t *wmName;
+
+ QWMMetaDataKey(const QString &qtn, const wchar_t *wmn) : qtName(qtn), wmName(wmn) { }
};
}
-static const QWMMetaDataKeyLookup qt_wmMetaDataKeys[] =
+typedef QList<QWMMetaDataKey> QWMMetaDataKeys;
+Q_GLOBAL_STATIC(QWMMetaDataKeys, metadataKeys)
+
+static const QWMMetaDataKeys *qt_wmMetaDataKeys()
{
- { QMediaMetaData::Title, L"Title" },
- { QMediaMetaData::SubTitle, L"WM/SubTitle" },
- { QMediaMetaData::Author, L"Author" },
- { QMediaMetaData::Comment, L"Comment" },
- { QMediaMetaData::Description, L"Description" },
- { QMediaMetaData::Category, L"WM/Category" },
- { QMediaMetaData::Genre, L"WM/Genre" },
- //{ QMediaMetaData::Date, 0 },
- { QMediaMetaData::Year, L"WM/Year" },
- { QMediaMetaData::UserRating, L"Rating" },
- //{ QMediaMetaData::MetaDatawords, 0 },
- { QMediaMetaData::Language, L"WM/Language" },
- { QMediaMetaData::Publisher, L"WM/Publisher" },
- { QMediaMetaData::Copyright, L"Copyright" },
- { QMediaMetaData::ParentalRating, L"WM/ParentalRating" },
- //{ QMediaMetaData::RatingOrganisation, L"RatingOrganisation" },
-
- // Media
- { QMediaMetaData::Size, L"FileSize" },
- { QMediaMetaData::MediaType, L"MediaType" },
- { QMediaMetaData::Duration, L"Duration" },
-
- // Audio
- { QMediaMetaData::AudioBitRate, L"AudioBitRate" },
- { QMediaMetaData::AudioCodec, L"AudioCodec" },
- { QMediaMetaData::ChannelCount, L"ChannelCount" },
- { QMediaMetaData::SampleRate, L"Frequency" },
-
- // Music
- { QMediaMetaData::AlbumTitle, L"WM/AlbumTitle" },
- { QMediaMetaData::AlbumArtist, L"WM/AlbumArtist" },
- { QMediaMetaData::ContributingArtist, L"Author" },
- { QMediaMetaData::Composer, L"WM/Composer" },
- { QMediaMetaData::Conductor, L"WM/Conductor" },
- { QMediaMetaData::Lyrics, L"WM/Lyrics" },
- { QMediaMetaData::Mood, L"WM/Mood" },
- { QMediaMetaData::TrackNumber, L"WM/TrackNumber" },
- //{ QMediaMetaData::TrackCount, 0 },
- //{ QMediaMetaData::CoverArtUriSmall, 0 },
- //{ QMediaMetaData::CoverArtUriLarge, 0 },
-
- // Image/Video
- { QMediaMetaData::Resolution, L"WM/VideoHeight" },
- { QMediaMetaData::PixelAspectRatio, L"AspectRatioX" },
-
- // Video
- { QMediaMetaData::VideoFrameRate, L"WM/VideoFrameRate" },
- { QMediaMetaData::VideoBitRate, L"VideoBitRate" },
- { QMediaMetaData::VideoCodec, L"VideoCodec" },
-
- //{ QMediaMetaData::PosterUri, 0 },
-
- // Movie
- { QMediaMetaData::ChapterNumber, L"ChapterNumber" },
- { QMediaMetaData::Director, L"WM/Director" },
- { QMediaMetaData::LeadPerformer, L"LeadPerformer" },
- { QMediaMetaData::Writer, L"WM/Writer" },
-};
+ if (metadataKeys->isEmpty()) {
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Title, L"Title"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::SubTitle, L"WM/SubTitle"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Author, L"Author"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Comment, L"Comment"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Description, L"Description"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Category, L"WM/Category"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Genre, L"WM/Genre"));
+ //metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Date, 0));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Year, L"WM/Year"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::UserRating, L"Rating"));
+ //metadataKeys->append(QWMMetaDataKey(QMediaMetaData::MetaDatawords, 0));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Language, L"WM/Language"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Publisher, L"WM/Publisher"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Copyright, L"Copyright"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::ParentalRating, L"WM/ParentalRating"));
+ //metadataKeys->append(QWMMetaDataKey(QMediaMetaData::RatingOrganisation, L"RatingOrganisation"));
+
+ // Media
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Size, L"FileSize"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::MediaType, L"MediaType"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Duration, L"Duration"));
+
+ // Audio
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::AudioBitRate, L"AudioBitRate"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::AudioCodec, L"AudioCodec"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::ChannelCount, L"ChannelCount"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::SampleRate, L"Frequency"));
+
+ // Music
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::AlbumTitle, L"WM/AlbumTitle"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::AlbumArtist, L"WM/AlbumArtist"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::ContributingArtist, L"Author"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Composer, L"WM/Composer"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Conductor, L"WM/Conductor"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Lyrics, L"WM/Lyrics"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Mood, L"WM/Mood"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::TrackNumber, L"WM/TrackNumber"));
+ //metadataKeys->append(QWMMetaDataKey(QMediaMetaData::TrackCount, 0));
+ //metadataKeys->append(QWMMetaDataKey(QMediaMetaData::CoverArtUriSmall, 0));
+ //metadataKeys->append(QWMMetaDataKey(QMediaMetaData::CoverArtUriLarge, 0));
+
+ // Image/Video
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Resolution, L"WM/VideoHeight"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::PixelAspectRatio, L"AspectRatioX"));
+
+ // Video
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::VideoFrameRate, L"WM/VideoFrameRate"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::VideoBitRate, L"VideoBitRate"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::VideoCodec, L"VideoCodec"));
+
+ //metadataKeys->append(QWMMetaDataKey(QMediaMetaData::PosterUri, 0));
+
+ // Movie
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::ChapterNumber, L"ChapterNumber"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Director, L"WM/Director"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::LeadPerformer, L"LeadPerformer"));
+ metadataKeys->append(QWMMetaDataKey(QMediaMetaData::Writer, L"WM/Writer"));
+ }
+
+ return metadataKeys;
+}
static QVariant getValue(IWMHeaderInfo *header, const wchar_t *key)
{
@@ -491,32 +501,29 @@ void DirectShowMetaDataControl::updateGraph(IFilterGraph2 *graph, IBaseFilter *s
IWMHeaderInfo *info = com_cast<IWMHeaderInfo>(source, IID_IWMHeaderInfo);
if (info) {
- static const int count = sizeof(qt_wmMetaDataKeys) / sizeof(QWMMetaDataKeyLookup);
- for (int i = 0; i < count; ++i) {
- QVariant var = getValue(info, qt_wmMetaDataKeys[i].token);
+ Q_FOREACH (const QWMMetaDataKey &key, *qt_wmMetaDataKeys()) {
+ QVariant var = getValue(info, key.wmName);
if (var.isValid()) {
- QString key = qt_wmMetaDataKeys[i].key;
-
- if (key == QMediaMetaData::Duration) {
+ if (key.qtName == QMediaMetaData::Duration) {
// duration is provided in 100-nanosecond units, convert to milliseconds
var = (var.toLongLong() + 10000) / 10000;
- } else if (key == QMediaMetaData::Resolution) {
+ } else if (key.qtName == QMediaMetaData::Resolution) {
QSize res;
res.setHeight(var.toUInt());
res.setWidth(getValue(info, L"WM/VideoWidth").toUInt());
var = res;
- } else if (key == QMediaMetaData::VideoFrameRate) {
+ } else if (key.qtName == QMediaMetaData::VideoFrameRate) {
var = var.toReal() / 1000.f;
- } else if (key == QMediaMetaData::PixelAspectRatio) {
+ } else if (key.qtName == QMediaMetaData::PixelAspectRatio) {
QSize aspectRatio;
aspectRatio.setWidth(var.toUInt());
aspectRatio.setHeight(getValue(info, L"AspectRatioY").toUInt());
var = aspectRatio;
- } else if (key == QMediaMetaData::UserRating) {
+ } else if (key.qtName == QMediaMetaData::UserRating) {
var = (var.toUInt() - 1) / qreal(98) * 100;
}
- m_metadata.insert(key, var);
+ m_metadata.insert(key.qtName, var);
}
}
diff --git a/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp b/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp
index c2b7c33c3..170d25a07 100644
--- a/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp
@@ -50,13 +50,6 @@
QT_BEGIN_NAMESPACE
-struct QGstreamerMetaDataKeyLookup
-{
- QString key;
- const char *token;
- QVariant::Type type;
-};
-
static QVariant fromGStreamerOrientation(const QVariant &value)
{
// Note gstreamer tokens either describe the counter clockwise rotation of the
@@ -87,87 +80,109 @@ static QVariant toGStreamerOrientation(const QVariant &value)
}
}
-static const QGstreamerMetaDataKeyLookup qt_gstreamerMetaDataKeys[] =
+namespace {
+ struct QGStreamerMetaDataKey
+ {
+ QString qtName;
+ const char *gstName;
+ QVariant::Type type;
+
+ QGStreamerMetaDataKey(const QString &qtn, const char *gstn, QVariant::Type t)
+ : qtName(qtn)
+ , gstName(gstn)
+ , type(t)
+ { }
+ };
+}
+
+typedef QList<QGStreamerMetaDataKey> QGStreamerMetaDataKeys;
+Q_GLOBAL_STATIC(QGStreamerMetaDataKeys, metadataKeys)
+
+static const QGStreamerMetaDataKeys *qt_gstreamerMetaDataKeys()
{
- { QMediaMetaData::Title, GST_TAG_TITLE, QVariant::String },
- //{ QMediaMetaData::SubTitle, 0, QVariant::String },
- //{ QMediaMetaData::Author, 0, QVariant::String },
- { QMediaMetaData::Comment, GST_TAG_COMMENT, QVariant::String },
- { QMediaMetaData::Date, GST_TAG_DATE_TIME, QVariant::DateTime },
- { QMediaMetaData::Description, GST_TAG_DESCRIPTION, QVariant::String },
- //{ QMediaMetaData::Category, 0, QVariant::String },
- { QMediaMetaData::Genre, GST_TAG_GENRE, QVariant::String },
- //{ QMediaMetaData::Year, 0, QVariant::Int },
- //{ QMediaMetaData::UserRating, , QVariant::Int },
-
- { QMediaMetaData::Language, GST_TAG_LANGUAGE_CODE, QVariant::String },
-
- { QMediaMetaData::Publisher, GST_TAG_ORGANIZATION, QVariant::String },
- { QMediaMetaData::Copyright, GST_TAG_COPYRIGHT, QVariant::String },
- //{ QMediaMetaData::ParentalRating, 0, QVariant::String },
- //{ QMediaMetaData::RatingOrganisation, 0, QVariant::String },
-
- // Media
- //{ QMediaMetaData::Size, 0, QVariant::Int },
- //{ QMediaMetaData::MediaType, 0, QVariant::String },
- { QMediaMetaData::Duration, GST_TAG_DURATION, QVariant::Int },
-
- // Audio
- { QMediaMetaData::AudioBitRate, GST_TAG_BITRATE, QVariant::Int },
- { QMediaMetaData::AudioCodec, GST_TAG_AUDIO_CODEC, QVariant::String },
- //{ QMediaMetaData::ChannelCount, 0, QVariant::Int },
- //{ QMediaMetaData::SampleRate, 0, QVariant::Int },
-
- // Music
- { QMediaMetaData::AlbumTitle, GST_TAG_ALBUM, QVariant::String },
- { QMediaMetaData::AlbumArtist, GST_TAG_ARTIST, QVariant::String},
- { QMediaMetaData::ContributingArtist, GST_TAG_PERFORMER, QVariant::String },
+ if (metadataKeys->isEmpty()) {
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Title, GST_TAG_TITLE, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::SubTitle, 0, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Author, 0, QVariant::String));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Comment, GST_TAG_COMMENT, QVariant::String));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Date, GST_TAG_DATE_TIME, QVariant::DateTime));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Description, GST_TAG_DESCRIPTION, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Category, 0, QVariant::String));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Genre, GST_TAG_GENRE, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Year, 0, QVariant::Int));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::UserRating, , QVariant::Int));
+
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Language, GST_TAG_LANGUAGE_CODE, QVariant::String));
+
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Publisher, GST_TAG_ORGANIZATION, QVariant::String));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Copyright, GST_TAG_COPYRIGHT, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::ParentalRating, 0, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::RatingOrganisation, 0, QVariant::String));
+
+ // Media
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Size, 0, QVariant::Int));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::MediaType, 0, QVariant::String));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Duration, GST_TAG_DURATION, QVariant::Int));
+
+ // Audio
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::AudioBitRate, GST_TAG_BITRATE, QVariant::Int));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::AudioCodec, GST_TAG_AUDIO_CODEC, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::ChannelCount, 0, QVariant::Int));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::SampleRate, 0, QVariant::Int));
+
+ // Music
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::AlbumTitle, GST_TAG_ALBUM, QVariant::String));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::AlbumArtist, GST_TAG_ARTIST, QVariant::String));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::ContributingArtist, GST_TAG_PERFORMER, QVariant::String));
#if (GST_VERSION_MAJOR >= 0) && (GST_VERSION_MINOR >= 10) && (GST_VERSION_MICRO >= 19)
- { QMediaMetaData::Composer, GST_TAG_COMPOSER, QVariant::String },
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Composer, GST_TAG_COMPOSER, QVariant::String));
#endif
- //{ QMediaMetaData::Conductor, 0, QVariant::String },
- //{ QMediaMetaData::Lyrics, 0, QVariant::String },
- //{ QMediaMetaData::Mood, 0, QVariant::String },
- { QMediaMetaData::TrackNumber, GST_TAG_TRACK_NUMBER, QVariant::Int },
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Conductor, 0, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Lyrics, 0, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Mood, 0, QVariant::String));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::TrackNumber, GST_TAG_TRACK_NUMBER, QVariant::Int));
- //{ QMediaMetaData::CoverArtUrlSmall, 0, QVariant::String },
- //{ QMediaMetaData::CoverArtUrlLarge, 0, QVariant::String },
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::CoverArtUrlSmall, 0, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::CoverArtUrlLarge, 0, QVariant::String));
- // Image/Video
- //{ QMediaMetaData::Resolution, 0, QVariant::Size },
- //{ QMediaMetaData::PixelAspectRatio, 0, QVariant::Size },
+ // Image/Video
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Resolution, 0, QVariant::Size));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::PixelAspectRatio, 0, QVariant::Size));
- // Video
- //{ QMediaMetaData::VideoFrameRate, 0, QVariant::String },
- //{ QMediaMetaData::VideoBitRate, 0, QVariant::Double },
- { QMediaMetaData::VideoCodec, GST_TAG_VIDEO_CODEC, QVariant::String },
+ // Video
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::VideoFrameRate, 0, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::VideoBitRate, 0, QVariant::Double));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::VideoCodec, GST_TAG_VIDEO_CODEC, QVariant::String));
- //{ QMediaMetaData::PosterUrl, 0, QVariant::String },
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::PosterUrl, 0, QVariant::String));
- // Movie
- //{ QMediaMetaData::ChapterNumber, 0, QVariant::Int },
- //{ QMediaMetaData::Director, 0, QVariant::String },
- { QMediaMetaData::LeadPerformer, GST_TAG_PERFORMER, QVariant::String },
- //{ QMediaMetaData::Writer, 0, QVariant::String },
+ // Movie
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::ChapterNumber, 0, QVariant::Int));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Director, 0, QVariant::String));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::LeadPerformer, GST_TAG_PERFORMER, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Writer, 0, QVariant::String));
#if (GST_VERSION_MAJOR >= 0) && (GST_VERSION_MINOR >= 10) && (GST_VERSION_MICRO >= 30)
- // Photos
- { QMediaMetaData::CameraManufacturer, GST_TAG_DEVICE_MANUFACTURER, QVariant::String },
- { QMediaMetaData::CameraModel, GST_TAG_DEVICE_MODEL, QVariant::String },
- //{ QMediaMetaData::Event, 0, QVariant::String },
- //{ QMediaMetaData::Subject, 0, QVariant::String },
-
- { QMediaMetaData::Orientation, GST_TAG_IMAGE_ORIENTATION, QVariant::String },
-
- // GPS
- { QMediaMetaData::GPSLatitude, GST_TAG_GEO_LOCATION_LATITUDE, QVariant::Double },
- { QMediaMetaData::GPSLongitude, GST_TAG_GEO_LOCATION_LONGITUDE, QVariant::Double },
- { QMediaMetaData::GPSAltitude, GST_TAG_GEO_LOCATION_ELEVATION, QVariant::Double },
- { QMediaMetaData::GPSTrack, GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION, QVariant::Double },
- { QMediaMetaData::GPSSpeed, GST_TAG_GEO_LOCATION_MOVEMENT_SPEED, QVariant::Double },
- { QMediaMetaData::GPSImgDirection, GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION, QVariant::Double }
+ // Photos
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::CameraManufacturer, GST_TAG_DEVICE_MANUFACTURER, QVariant::String));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::CameraModel, GST_TAG_DEVICE_MODEL, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Event, 0, QVariant::String));
+ //metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Subject, 0, QVariant::String));
+
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::Orientation, GST_TAG_IMAGE_ORIENTATION, QVariant::String));
+
+ // GPS
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::GPSLatitude, GST_TAG_GEO_LOCATION_LATITUDE, QVariant::Double));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::GPSLongitude, GST_TAG_GEO_LOCATION_LONGITUDE, QVariant::Double));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::GPSAltitude, GST_TAG_GEO_LOCATION_ELEVATION, QVariant::Double));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::GPSTrack, GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION, QVariant::Double));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::GPSSpeed, GST_TAG_GEO_LOCATION_MOVEMENT_SPEED, QVariant::Double));
+ metadataKeys->append(QGStreamerMetaDataKey(QMediaMetaData::GPSImgDirection, GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION, QVariant::Double));
#endif
-};
+ }
+
+ return metadataKeys;
+}
CameraBinMetaData::CameraBinMetaData(QObject *parent)
:QMetaDataWriterControl(parent)
@@ -183,14 +198,9 @@ QVariant CameraBinMetaData::metaData(const QString &key) const
return (metersPerSec * 3600) / 1000;
}
- static const int count = sizeof(qt_gstreamerMetaDataKeys) / sizeof(QGstreamerMetaDataKeyLookup);
-
- for (int i = 0; i < count; ++i) {
- if (qt_gstreamerMetaDataKeys[i].key == key) {
- const char *name = qt_gstreamerMetaDataKeys[i].token;
-
- return m_values.value(QByteArray::fromRawData(name, qstrlen(name)));
- }
+ Q_FOREACH (const QGStreamerMetaDataKey &metadataKey, *qt_gstreamerMetaDataKeys()) {
+ if (metadataKey.qtName == key)
+ return m_values.value(QByteArray::fromRawData(metadataKey.gstName, qstrlen(metadataKey.gstName)));
}
return QVariant();
}
@@ -207,14 +217,12 @@ void CameraBinMetaData::setMetaData(const QString &key, const QVariant &value)
}
}
- static const int count = sizeof(qt_gstreamerMetaDataKeys) / sizeof(QGstreamerMetaDataKeyLookup);
-
- for (int i = 0; i < count; ++i) {
- if (qt_gstreamerMetaDataKeys[i].key == key) {
- const char *name = qt_gstreamerMetaDataKeys[i].token;
+ Q_FOREACH (const QGStreamerMetaDataKey &metadataKey, *qt_gstreamerMetaDataKeys()) {
+ if (metadataKey.qtName == key) {
+ const char *name = metadataKey.gstName;
if (correctedValue.isValid()) {
- correctedValue.convert(qt_gstreamerMetaDataKeys[i].type);
+ correctedValue.convert(metadataKey.type);
m_values.insert(QByteArray::fromRawData(name, qstrlen(name)), correctedValue);
} else {
m_values.remove(QByteArray::fromRawData(name, qstrlen(name)));
@@ -232,14 +240,12 @@ QStringList CameraBinMetaData::availableMetaData() const
{
static QMap<QByteArray, QString> keysMap;
if (keysMap.isEmpty()) {
- const int count = sizeof(qt_gstreamerMetaDataKeys) / sizeof(QGstreamerMetaDataKeyLookup);
- for (int i = 0; i < count; ++i) {
- keysMap[QByteArray(qt_gstreamerMetaDataKeys[i].token)] = qt_gstreamerMetaDataKeys[i].key;
- }
+ Q_FOREACH (const QGStreamerMetaDataKey &metadataKey, *qt_gstreamerMetaDataKeys())
+ keysMap[QByteArray(metadataKey.gstName)] = metadataKey.qtName;
}
QStringList res;
- foreach (const QByteArray &key, m_values.keys()) {
+ Q_FOREACH (const QByteArray &key, m_values.keys()) {
QString tag = keysMap.value(key);
if (!tag.isEmpty())
res.append(tag);
diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp b/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp
index fd7fb7d82..1080a5875 100644
--- a/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp
+++ b/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp
@@ -46,80 +46,82 @@
#include <gst/gst.h>
#include <gst/gstversion.h>
-struct QGstreamerMetaDataKeyLookup
-{
- QString key;
- const char *token;
-};
-static const QGstreamerMetaDataKeyLookup qt_gstreamerMetaDataKeys[] =
+typedef QMap<QString, QByteArray> QGstreamerMetaDataKeyLookup;
+Q_GLOBAL_STATIC(QGstreamerMetaDataKeyLookup, metadataKeys)
+
+static const QGstreamerMetaDataKeyLookup *qt_gstreamerMetaDataKeys()
{
- { QMediaMetaData::Title, GST_TAG_TITLE },
- //{ QMediaMetaData::SubTitle, 0 },
- //{ QMediaMetaData::Author, 0 },
- { QMediaMetaData::Comment, GST_TAG_COMMENT },
- { QMediaMetaData::Description, GST_TAG_DESCRIPTION },
- //{ QMediaMetaData::Category, 0 },
- { QMediaMetaData::Genre, GST_TAG_GENRE },
- //{ QMediaMetaData::Year, 0 },
- //{ QMediaMetaData::UserRating, 0 },
-
- { QMediaMetaData::Language, GST_TAG_LANGUAGE_CODE },
-
- { QMediaMetaData::Publisher, GST_TAG_ORGANIZATION },
- { QMediaMetaData::Copyright, GST_TAG_COPYRIGHT },
- //{ QMediaMetaData::ParentalRating, 0 },
- //{ QMediaMetaData::RatingOrganisation, 0 },
-
- // Media
- //{ QMediaMetaData::Size, 0 },
- //{ QMediaMetaData::MediaType, 0 },
- { QMediaMetaData::Duration, GST_TAG_DURATION },
-
- // Audio
- { QMediaMetaData::AudioBitRate, GST_TAG_BITRATE },
- { QMediaMetaData::AudioCodec, GST_TAG_AUDIO_CODEC },
- //{ QMediaMetaData::ChannelCount, 0 },
- //{ QMediaMetaData::SampleRate, 0 },
-
- // Music
- { QMediaMetaData::AlbumTitle, GST_TAG_ALBUM },
- { QMediaMetaData::AlbumArtist, GST_TAG_ARTIST},
- { QMediaMetaData::ContributingArtist, GST_TAG_PERFORMER },
+ if (metadataKeys->isEmpty()) {
+ metadataKeys->insert(QMediaMetaData::Title, GST_TAG_TITLE);
+ metadataKeys->insert(QMediaMetaData::SubTitle, 0);
+ //metadataKeys->insert(QMediaMetaData::Author, 0);
+ metadataKeys->insert(QMediaMetaData::Comment, GST_TAG_COMMENT);
+ metadataKeys->insert(QMediaMetaData::Description, GST_TAG_DESCRIPTION);
+ //metadataKeys->insert(QMediaMetaData::Category, 0);
+ metadataKeys->insert(QMediaMetaData::Genre, GST_TAG_GENRE);
+ //metadataKeys->insert(QMediaMetaData::Year, 0);
+ //metadataKeys->insert(QMediaMetaData::UserRating, 0);
+
+ metadataKeys->insert(QMediaMetaData::Language, GST_TAG_LANGUAGE_CODE);
+
+ metadataKeys->insert(QMediaMetaData::Publisher, GST_TAG_ORGANIZATION);
+ metadataKeys->insert(QMediaMetaData::Copyright, GST_TAG_COPYRIGHT);
+ //metadataKeys->insert(QMediaMetaData::ParentalRating, 0);
+ //metadataKeys->insert(QMediaMetaData::RatingOrganisation, 0);
+
+ // Media
+ //metadataKeys->insert(QMediaMetaData::Size, 0);
+ //metadataKeys->insert(QMediaMetaData::MediaType, 0);
+ metadataKeys->insert(QMediaMetaData::Duration, GST_TAG_DURATION);
+
+ // Audio
+ metadataKeys->insert(QMediaMetaData::AudioBitRate, GST_TAG_BITRATE);
+ metadataKeys->insert(QMediaMetaData::AudioCodec, GST_TAG_AUDIO_CODEC);
+ //metadataKeys->insert(QMediaMetaData::ChannelCount, 0);
+ //metadataKeys->insert(QMediaMetaData::SampleRate, 0);
+
+ // Music
+ metadataKeys->insert(QMediaMetaData::AlbumTitle, GST_TAG_ALBUM);
+ metadataKeys->insert(QMediaMetaData::AlbumArtist, GST_TAG_ARTIST);
+ metadataKeys->insert(QMediaMetaData::ContributingArtist, GST_TAG_PERFORMER);
#if (GST_VERSION_MAJOR >= 0) && (GST_VERSION_MINOR >= 10) && (GST_VERSION_MICRO >= 19)
- { QMediaMetaData::Composer, GST_TAG_COMPOSER },
+ metadataKeys->insert(QMediaMetaData::Composer, GST_TAG_COMPOSER);
#endif
- //{ QMediaMetaData::Conductor, 0 },
- //{ QMediaMetaData::Lyrics, 0 },
- //{ QMediaMetaData::Mood, 0 },
- { QMediaMetaData::TrackNumber, GST_TAG_TRACK_NUMBER },
-
- //{ QMediaMetaData::CoverArtUrlSmall, 0 },
- //{ QMediaMetaData::CoverArtUrlLarge, 0 },
-
- // Image/Video
- //{ QMediaMetaData::Resolution, 0 },
- //{ QMediaMetaData::PixelAspectRatio, 0 },
-
- // Video
- //{ QMediaMetaData::VideoFrameRate, 0 },
- //{ QMediaMetaData::VideoBitRate, 0 },
- { QMediaMetaData::VideoCodec, GST_TAG_VIDEO_CODEC },
-
- //{ QMediaMetaData::PosterUrl, 0 },
-
- // Movie
- //{ QMediaMetaData::ChapterNumber, 0 },
- //{ QMediaMetaData::Director, 0 },
- { QMediaMetaData::LeadPerformer, GST_TAG_PERFORMER },
- //{ QMediaMetaData::Writer, 0 },
-
- // Photos
- //{ QMediaMetaData::CameraManufacturer, 0 },
- //{ QMediaMetaData::CameraModel, 0 },
- //{ QMediaMetaData::Event, 0 },
- //{ QMediaMetaData::Subject, 0 }
-};
+ //metadataKeys->insert(QMediaMetaData::Conductor, 0);
+ //metadataKeys->insert(QMediaMetaData::Lyrics, 0);
+ //metadataKeys->insert(QMediaMetaData::Mood, 0);
+ metadataKeys->insert(QMediaMetaData::TrackNumber, GST_TAG_TRACK_NUMBER);
+
+ //metadataKeys->insert(QMediaMetaData::CoverArtUrlSmall, 0);
+ //metadataKeys->insert(QMediaMetaData::CoverArtUrlLarge, 0);
+
+ // Image/Video
+ //metadataKeys->insert(QMediaMetaData::Resolution, 0);
+ //metadataKeys->insert(QMediaMetaData::PixelAspectRatio, 0);
+
+ // Video
+ //metadataKeys->insert(QMediaMetaData::VideoFrameRate, 0);
+ //metadataKeys->insert(QMediaMetaData::VideoBitRate, 0);
+ metadataKeys->insert(QMediaMetaData::VideoCodec, GST_TAG_VIDEO_CODEC);
+
+ //metadataKeys->insert(QMediaMetaData::PosterUrl, 0);
+
+ // Movie
+ //metadataKeys->insert(QMediaMetaData::ChapterNumber, 0);
+ //metadataKeys->insert(QMediaMetaData::Director, 0);
+ metadataKeys->insert(QMediaMetaData::LeadPerformer, GST_TAG_PERFORMER);
+ //metadataKeys->insert(QMediaMetaData::Writer, 0);
+
+ // Photos
+ //metadataKeys->insert(QMediaMetaData::CameraManufacturer, 0);
+ //metadataKeys->insert(QMediaMetaData::CameraModel, 0);
+ //metadataKeys->insert(QMediaMetaData::Event, 0);
+ //metadataKeys->insert(QMediaMetaData::Subject, 0 }
+ }
+
+ return metadataKeys;
+}
QGstreamerCaptureMetaDataControl::QGstreamerCaptureMetaDataControl(QObject *parent)
:QMetaDataWriterControl(parent)
@@ -128,50 +130,30 @@ QGstreamerCaptureMetaDataControl::QGstreamerCaptureMetaDataControl(QObject *pare
QVariant QGstreamerCaptureMetaDataControl::metaData(const QString &key) const
{
- static const int count = sizeof(qt_gstreamerMetaDataKeys) / sizeof(QGstreamerMetaDataKeyLookup);
-
- for (int i = 0; i < count; ++i) {
- if (qt_gstreamerMetaDataKeys[i].key == key) {
- const char *name = qt_gstreamerMetaDataKeys[i].token;
+ QGstreamerMetaDataKeyLookup::const_iterator it = qt_gstreamerMetaDataKeys()->find(key);
+ if (it != qt_gstreamerMetaDataKeys()->constEnd())
+ return m_values.value(it.value());
- return m_values.value(QByteArray::fromRawData(name, qstrlen(name)));
- }
- }
return QVariant();
}
void QGstreamerCaptureMetaDataControl::setMetaData(const QString &key, const QVariant &value)
{
- static const int count = sizeof(qt_gstreamerMetaDataKeys) / sizeof(QGstreamerMetaDataKeyLookup);
-
- for (int i = 0; i < count; ++i) {
- if (qt_gstreamerMetaDataKeys[i].key == key) {
- const char *name = qt_gstreamerMetaDataKeys[i].token;
-
- m_values.insert(QByteArray::fromRawData(name, qstrlen(name)), value);
+ QGstreamerMetaDataKeyLookup::const_iterator it = qt_gstreamerMetaDataKeys()->find(key);
+ if (it != qt_gstreamerMetaDataKeys()->constEnd()) {
+ m_values.insert(it.value(), value);
- emit QMetaDataWriterControl::metaDataChanged();
- emit QMetaDataWriterControl::metaDataChanged(key, value);
- emit metaDataChanged(m_values);
-
- return;
- }
+ emit QMetaDataWriterControl::metaDataChanged();
+ emit QMetaDataWriterControl::metaDataChanged(key, value);
+ emit metaDataChanged(m_values);
}
}
QStringList QGstreamerCaptureMetaDataControl::availableMetaData() const
{
- static QMap<QByteArray, QString> keysMap;
- if (keysMap.isEmpty()) {
- const int count = sizeof(qt_gstreamerMetaDataKeys) / sizeof(QGstreamerMetaDataKeyLookup);
- for (int i = 0; i < count; ++i) {
- keysMap[QByteArray(qt_gstreamerMetaDataKeys[i].token)] = qt_gstreamerMetaDataKeys[i].key;
- }
- }
-
QStringList res;
foreach (const QByteArray &key, m_values.keys()) {
- QString tag = keysMap.value(key);
+ QString tag = qt_gstreamerMetaDataKeys()->key(key);
if (!tag.isEmpty())
res.append(tag);
}
diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp
index fa837d3f4..88faf607c 100644
--- a/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp
+++ b/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp
@@ -48,90 +48,86 @@
QT_BEGIN_NAMESPACE
-struct QGstreamerMetaDataKeyLookup
-{
- QString key;
- const char *token;
-};
+typedef QMap<QByteArray, QString> QGstreamerMetaDataKeyLookup;
+Q_GLOBAL_STATIC(QGstreamerMetaDataKeyLookup, metadataKeys)
-static const QGstreamerMetaDataKeyLookup qt_gstreamerMetaDataKeys[] =
+static const QGstreamerMetaDataKeyLookup *qt_gstreamerMetaDataKeys()
{
- { QMediaMetaData::Title, GST_TAG_TITLE },
- //{ QMediaMetaData::SubTitle, 0 },
- //{ QMediaMetaData::Author, 0 },
- { QMediaMetaData::Comment, GST_TAG_COMMENT },
- { QMediaMetaData::Description, GST_TAG_DESCRIPTION },
- //{ QMediaMetaData::Category, 0 },
- { QMediaMetaData::Genre, GST_TAG_GENRE },
- { QMediaMetaData::Year, "year" },
- //{ QMediaMetaData::UserRating, 0 },
-
- { QMediaMetaData::Language, GST_TAG_LANGUAGE_CODE },
-
- { QMediaMetaData::Publisher, GST_TAG_ORGANIZATION },
- { QMediaMetaData::Copyright, GST_TAG_COPYRIGHT },
- //{ QMediaMetaData::ParentalRating, 0 },
- //{ QMediaMetaData::RatingOrganisation, 0 },
-
- // Media
- //{ QMediaMetaData::Size, 0 },
- //{ QMediaMetaData::MediaType, 0 },
- { QMediaMetaData::Duration, GST_TAG_DURATION },
-
- // Audio
- { QMediaMetaData::AudioBitRate, GST_TAG_BITRATE },
- { QMediaMetaData::AudioCodec, GST_TAG_AUDIO_CODEC },
- //{ QMediaMetaData::ChannelCount, 0 },
- //{ QMediaMetaData::SampleRate, 0 },
-
- // Music
- { QMediaMetaData::AlbumTitle, GST_TAG_ALBUM },
- { QMediaMetaData::AlbumArtist, GST_TAG_ARTIST},
- { QMediaMetaData::ContributingArtist, GST_TAG_PERFORMER },
+ 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_ARTIST, QMediaMetaData::AlbumArtist);
+ metadataKeys->insert(GST_TAG_PERFORMER, QMediaMetaData::ContributingArtist);
#if (GST_VERSION_MAJOR >= 0) && (GST_VERSION_MINOR >= 10) && (GST_VERSION_MICRO >= 19)
- { QMediaMetaData::Composer, GST_TAG_COMPOSER },
+ metadataKeys->insert(GST_TAG_COMPOSER, QMediaMetaData::Composer);
#endif
- //{ QMediaMetaData::Conductor, 0 },
- //{ QMediaMetaData::Lyrics, 0 },
- //{ QMediaMetaData::Mood, 0 },
- { QMediaMetaData::TrackNumber, GST_TAG_TRACK_NUMBER },
-
- //{ QMediaMetaData::CoverArtUrlSmall, 0 },
- //{ QMediaMetaData::CoverArtUrlLarge, 0 },
-
- // Image/Video
- { QMediaMetaData::Resolution, "resolution" },
- { QMediaMetaData::PixelAspectRatio, "pixel-aspect-ratio" },
-
- // Video
- //{ QMediaMetaData::VideoFrameRate, 0 },
- //{ QMediaMetaData::VideoBitRate, 0 },
- { QMediaMetaData::VideoCodec, GST_TAG_VIDEO_CODEC },
-
- //{ QMediaMetaData::PosterUrl, 0 },
-
- // Movie
- //{ QMediaMetaData::ChapterNumber, 0 },
- //{ QMediaMetaData::Director, 0 },
- { QMediaMetaData::LeadPerformer, GST_TAG_PERFORMER },
- //{ QMediaMetaData::Writer, 0 },
-
- // Photos
- //{ QMediaMetaData::CameraManufacturer, 0 },
- //{ QMediaMetaData::CameraModel, 0 },
- //{ QMediaMetaData::Event, 0 },
- //{ QMediaMetaData::Subject, 0 }
-};
+ //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);
+
+ // Image/Video
+ metadataKeys->insert("resolution", QMediaMetaData::Resolution);
+ metadataKeys->insert("pixel-aspect-ratio", QMediaMetaData::PixelAspectRatio);
+
+ // 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()));
-
- const int count = sizeof(qt_gstreamerMetaDataKeys) / sizeof(QGstreamerMetaDataKeyLookup);
- for (int i = 0; i < count; ++i) {
- m_keysMap[QByteArray(qt_gstreamerMetaDataKeys[i].token)] = qt_gstreamerMetaDataKeys[i].key;
- }
}
QGstreamerMetaDataProvider::~QGstreamerMetaDataProvider()
@@ -167,8 +163,8 @@ void QGstreamerMetaDataProvider::updateTags()
QMapIterator<QByteArray ,QVariant> i(m_session->tags());
while (i.hasNext()) {
i.next();
- //use gstreamer native keys for elements not in m_keysMap
- QString key = m_keysMap.value(i.key(), i.key());
+ //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;
diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.h b/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.h
index e36c127ad..7b3b266fa 100644
--- a/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.h
+++ b/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.h
@@ -67,7 +67,6 @@ private slots:
private:
QGstreamerPlayerSession *m_session;
QVariantMap m_tags;
- QMap<QByteArray, QString> m_keysMap;
};
QT_END_NAMESPACE