summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@digia.com>2013-06-20 17:40:11 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-06-21 12:07:00 +0200
commite25db62a59e86a62990de43f554af3baecdd47ff (patch)
treeb3356c64c0d168a33a151e43da27caa3f25389d2
parent16a775d47a69913ce4f0306531c97469066ea896 (diff)
Multimedia plugins now have a unique JSON metadata 'Keys' property.
They previously had the multimedia services they provided as keys. This was a problem when several plugins were available on the same platform, providing the same multimedia service, but with different features or capabilities. Since they had the same key, only the first plugin in the directory was loaded. Nevertheless, it was actually working until commit 732dcfe7 in qtbase, as all plugins were loaded even when sharing the same key. The services a multimedia plugin provides are now declared in the 'Services' property. To preserve compatibility with third-party plugins, if that new property doesn't exist it falls back to the 'Keys' property. Task-number: QTBUG-31868 Task-number: QTBUG-31476 Change-Id: Ic3ba32eeef21b69b922bd3d4feb111101559d132 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
-rw-r--r--src/multimedia/qmediapluginloader.cpp7
-rw-r--r--src/plugins/android/mediaplayer/mediaplayer.json3
-rw-r--r--src/plugins/audiocapture/audiocapture.json3
-rw-r--r--src/plugins/avfoundation/camera/avfcamera.json3
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayer.json3
-rw-r--r--src/plugins/blackberry/blackberry_mediaservice.json3
-rw-r--r--src/plugins/directshow/directshow.json3
-rw-r--r--src/plugins/directshow/directshow_camera.json3
-rw-r--r--src/plugins/gstreamer/audiodecoder/audiodecoder.json3
-rw-r--r--src/plugins/gstreamer/camerabin/camerabin.json3
-rw-r--r--src/plugins/gstreamer/gstreamer.json3
-rw-r--r--src/plugins/gstreamer/mediacapture/mediacapture.json3
-rw-r--r--src/plugins/gstreamer/mediacapture/mediacapturecamera.json3
-rw-r--r--src/plugins/gstreamer/mediaplayer/mediaplayer.json3
-rw-r--r--src/plugins/qt7/qt7.json3
-rw-r--r--src/plugins/v4l/v4l.json3
-rw-r--r--src/plugins/wmf/wmf.json3
-rw-r--r--tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.json3
-rw-r--r--tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.json3
-rw-r--r--tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.json3
-rw-r--r--tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.json3
21 files changed, 46 insertions, 21 deletions
diff --git a/src/multimedia/qmediapluginloader.cpp b/src/multimedia/qmediapluginloader.cpp
index e23e32a3f..1b4a13f83 100644
--- a/src/multimedia/qmediapluginloader.cpp
+++ b/src/multimedia/qmediapluginloader.cpp
@@ -127,7 +127,12 @@ void QMediaPluginLoader::loadMetadata()
qDebug() << "QMediaPluginLoader: Inserted index " << i << " into metadata: " << jsonobj;
#endif
- QJsonArray arr = jsonobj.value(QStringLiteral("Keys")).toArray();
+ QJsonArray arr = jsonobj.value(QStringLiteral("Services")).toArray();
+ // Preserve compatibility with older plugins (made before 5.1) in which
+ // services were declared in the 'Keys' property
+ if (arr.isEmpty())
+ arr = jsonobj.value(QStringLiteral("Keys")).toArray();
+
foreach (QJsonValue value, arr) {
QString key = value.toString();
diff --git a/src/plugins/android/mediaplayer/mediaplayer.json b/src/plugins/android/mediaplayer/mediaplayer.json
index c4a27ea01..f371ebfd7 100644
--- a/src/plugins/android/mediaplayer/mediaplayer.json
+++ b/src/plugins/android/mediaplayer/mediaplayer.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.mediaplayer"]
+ "Keys": ["androidmultimedia"],
+ "Services": ["org.qt-project.qt.mediaplayer"]
}
diff --git a/src/plugins/audiocapture/audiocapture.json b/src/plugins/audiocapture/audiocapture.json
index d963a2e3e..4c7673da2 100644
--- a/src/plugins/audiocapture/audiocapture.json
+++ b/src/plugins/audiocapture/audiocapture.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.audiosource"]
+ "Keys": ["audiocapture"],
+ "Services": ["org.qt-project.qt.audiosource"]
}
diff --git a/src/plugins/avfoundation/camera/avfcamera.json b/src/plugins/avfoundation/camera/avfcamera.json
index d3a58c758..e4310b62c 100644
--- a/src/plugins/avfoundation/camera/avfcamera.json
+++ b/src/plugins/avfoundation/camera/avfcamera.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.camera"]
+ "Keys": ["avfoundationcamera"],
+ "Services": ["org.qt-project.qt.camera"]
}
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayer.json b/src/plugins/avfoundation/mediaplayer/avfmediaplayer.json
index c4a27ea01..5626edec0 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayer.json
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayer.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.mediaplayer"]
+ "Keys": ["avfoundationmediaplayer"],
+ "Services": ["org.qt-project.qt.mediaplayer"]
}
diff --git a/src/plugins/blackberry/blackberry_mediaservice.json b/src/plugins/blackberry/blackberry_mediaservice.json
index 54c1c9f04..2a59cc770 100644
--- a/src/plugins/blackberry/blackberry_mediaservice.json
+++ b/src/plugins/blackberry/blackberry_mediaservice.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
+ "Keys": ["blackberrymultimedia"],
+ "Services": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
}
diff --git a/src/plugins/directshow/directshow.json b/src/plugins/directshow/directshow.json
index 54c1c9f04..b1783b5ed 100644
--- a/src/plugins/directshow/directshow.json
+++ b/src/plugins/directshow/directshow.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
+ "Keys": ["directshow"],
+ "Services": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
}
diff --git a/src/plugins/directshow/directshow_camera.json b/src/plugins/directshow/directshow_camera.json
index d3a58c758..c37ce2c9a 100644
--- a/src/plugins/directshow/directshow_camera.json
+++ b/src/plugins/directshow/directshow_camera.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.camera"]
+ "Keys": ["directshow"],
+ "Services": ["org.qt-project.qt.camera"]
}
diff --git a/src/plugins/gstreamer/audiodecoder/audiodecoder.json b/src/plugins/gstreamer/audiodecoder/audiodecoder.json
index 3cc81dc72..4314f2efa 100644
--- a/src/plugins/gstreamer/audiodecoder/audiodecoder.json
+++ b/src/plugins/gstreamer/audiodecoder/audiodecoder.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.audiodecode"]
+ "Keys": ["gstreameraudiodecode"],
+ "Services": ["org.qt-project.qt.audiodecode"]
}
diff --git a/src/plugins/gstreamer/camerabin/camerabin.json b/src/plugins/gstreamer/camerabin/camerabin.json
index d3a58c758..3246b4683 100644
--- a/src/plugins/gstreamer/camerabin/camerabin.json
+++ b/src/plugins/gstreamer/camerabin/camerabin.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.camera"]
+ "Keys": ["gstreamercamerabin"],
+ "Services": ["org.qt-project.qt.camera"]
}
diff --git a/src/plugins/gstreamer/gstreamer.json b/src/plugins/gstreamer/gstreamer.json
index 3f6ccdafd..0656cce4f 100644
--- a/src/plugins/gstreamer/gstreamer.json
+++ b/src/plugins/gstreamer/gstreamer.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource", "org.qt-project.qt.camera", "org.qt-project.qt.audiodecode"]
+ "Keys": ["gstreamer"],
+ "Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource", "org.qt-project.qt.camera", "org.qt-project.qt.audiodecode"]
}
diff --git a/src/plugins/gstreamer/mediacapture/mediacapture.json b/src/plugins/gstreamer/mediacapture/mediacapture.json
index d963a2e3e..68ca3f55b 100644
--- a/src/plugins/gstreamer/mediacapture/mediacapture.json
+++ b/src/plugins/gstreamer/mediacapture/mediacapture.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.audiosource"]
+ "Keys": ["gstreamermediacapture"],
+ "Services": ["org.qt-project.qt.audiosource"]
}
diff --git a/src/plugins/gstreamer/mediacapture/mediacapturecamera.json b/src/plugins/gstreamer/mediacapture/mediacapturecamera.json
index b31238363..af9f3575f 100644
--- a/src/plugins/gstreamer/mediacapture/mediacapturecamera.json
+++ b/src/plugins/gstreamer/mediacapture/mediacapturecamera.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.audiosource", "org.qt-project.qt.camera"]
+ "Keys": ["gstreamermediacapture"]
+ "Services": ["org.qt-project.qt.audiosource", "org.qt-project.qt.camera"]
}
diff --git a/src/plugins/gstreamer/mediaplayer/mediaplayer.json b/src/plugins/gstreamer/mediaplayer/mediaplayer.json
index c4a27ea01..bd1a7e64d 100644
--- a/src/plugins/gstreamer/mediaplayer/mediaplayer.json
+++ b/src/plugins/gstreamer/mediaplayer/mediaplayer.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.mediaplayer"]
+ "Keys": ["gstreamermediaplayer"],
+ "Services": ["org.qt-project.qt.mediaplayer"]
}
diff --git a/src/plugins/qt7/qt7.json b/src/plugins/qt7/qt7.json
index c4a27ea01..b4cebad99 100644
--- a/src/plugins/qt7/qt7.json
+++ b/src/plugins/qt7/qt7.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.mediaplayer"]
+ "Keys": ["qt7"],
+ "Services": ["org.qt-project.qt.mediaplayer"]
}
diff --git a/src/plugins/v4l/v4l.json b/src/plugins/v4l/v4l.json
index f87f329c1..467fd526f 100644
--- a/src/plugins/v4l/v4l.json
+++ b/src/plugins/v4l/v4l.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.radio"]
+ "Keys": ["v4l"],
+ "Services": ["org.qt-project.qt.radio"]
}
diff --git a/src/plugins/wmf/wmf.json b/src/plugins/wmf/wmf.json
index b350cef41..e70736480 100644
--- a/src/plugins/wmf/wmf.json
+++ b/src/plugins/wmf/wmf.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiodecode"]
+ "Keys": ["windowsmediafoundation"],
+ "Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiodecode"]
}
diff --git a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.json b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.json
index c4a27ea01..69ff56452 100644
--- a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.json
+++ b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.mediaplayer"]
+ "Keys": ["mockserviceplugin1"],
+ "Services": ["org.qt-project.qt.mediaplayer"]
}
diff --git a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.json b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.json
index ec05f3e52..15d8ed505 100644
--- a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.json
+++ b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.radio"]
+ "Keys": ["mockserviceplugin2"],
+ "Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.radio"]
}
diff --git a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.json b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.json
index 58bbc4d74..591a02e51 100644
--- a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.json
+++ b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource"]
+ "Keys": ["mockserviceplugin3"],
+ "Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource"]
}
diff --git a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.json b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.json
index c4a27ea01..d8b8bd7e9 100644
--- a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.json
+++ b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.json
@@ -1,3 +1,4 @@
{
- "Keys": ["org.qt-project.qt.mediaplayer"]
+ "Keys": ["mockserviceplugin4"],
+ "Services": ["org.qt-project.qt.mediaplayer"]
}