diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-05-08 11:34:31 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-15 12:43:08 +0200 |
commit | b604d96ba8cb4b20f3a27537c591a7777e485d0e (patch) | |
tree | 8e636cca1eb1b8436dd03d96b1e4634d324a24b1 /src/plugins | |
parent | f4348fe3ae91ac47f45495681738505ff6005453 (diff) | |
download | qtmultimedia-b604d96ba8cb4b20f3a27537c591a7777e485d0e.tar.gz |
Make directshow-plugin available.
No longer include <qedit.h> in directshow-plugin,
which no longer ships in newer SDKs.
Ensure it only provides the camera service if the
WMF-plugin is built by using a different .json-file.
Adapt qcamerabackend-test to use widgets.
Task-number: QTBUG-28047
Change-Id: I22ea441b9edb56ff55bc275dba37c01c77d8dd90
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/directshow/camera/dscamerasession.cpp | 8 | ||||
-rw-r--r-- | src/plugins/directshow/camera/dscamerasession.h | 1 | ||||
-rw-r--r-- | src/plugins/directshow/directshow.pro | 3 | ||||
-rw-r--r-- | src/plugins/directshow/directshow_camera.json | 3 | ||||
-rw-r--r-- | src/plugins/directshow/dsserviceplugin.h | 6 |
5 files changed, 17 insertions, 4 deletions
diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp index f921dac20..353078f43 100644 --- a/src/plugins/directshow/camera/dscamerasession.cpp +++ b/src/plugins/directshow/camera/dscamerasession.cpp @@ -656,6 +656,10 @@ HRESULT DSCameraSession::getPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir, IPin bool DSCameraSession::createFilterGraph() { + // Previously containered in <qedit.h>. + static const IID iID_ISampleGrabber = { 0x6B652FFF, 0x11FE, 0x4fce, { 0x92, 0xAD, 0x02, 0x66, 0xB5, 0xD7, 0xC7, 0x8F } }; + static const CLSID cLSID_SampleGrabber = { 0xC1F400A0, 0x3F08, 0x11d3, { 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 } }; + HRESULT hr; IMoniker* pMoniker = NULL; ICreateDevEnum* pDevEnum = NULL; @@ -752,14 +756,14 @@ bool DSCameraSession::createFilterGraph() } // Sample grabber filter - hr = CoCreateInstance(CLSID_SampleGrabber, NULL,CLSCTX_INPROC, + hr = CoCreateInstance(cLSID_SampleGrabber, NULL,CLSCTX_INPROC, IID_IBaseFilter, (void**)&pSG_Filter); if (FAILED(hr)) { qWarning() << "failed to create sample grabber"; return false; } - hr = pSG_Filter->QueryInterface(IID_ISampleGrabber, (void**)&pSG); + hr = pSG_Filter->QueryInterface(iID_ISampleGrabber, (void**)&pSG); if (FAILED(hr)) { qWarning() << "failed to get sample grabber"; return false; diff --git a/src/plugins/directshow/camera/dscamerasession.h b/src/plugins/directshow/camera/dscamerasession.h index db0038813..e78358a5f 100644 --- a/src/plugins/directshow/camera/dscamerasession.h +++ b/src/plugins/directshow/camera/dscamerasession.h @@ -69,7 +69,6 @@ #define __IDxtAlphaSetter_INTERFACE_DEFINED__ #define __IDxtJpeg_INTERFACE_DEFINED__ #define __IDxtKey_INTERFACE_DEFINED__ -#include <qedit.h> struct ICaptureGraphBuilder2; struct ISampleGrabber; diff --git a/src/plugins/directshow/directshow.pro b/src/plugins/directshow/directshow.pro index 95f78ed81..97e72a107 100644 --- a/src/plugins/directshow/directshow.pro +++ b/src/plugins/directshow/directshow.pro @@ -24,4 +24,5 @@ win32-g++ { include(camera/camera.pri) OTHER_FILES += \ - directshow.json + directshow.json \ + directshow_camera.json diff --git a/src/plugins/directshow/directshow_camera.json b/src/plugins/directshow/directshow_camera.json new file mode 100644 index 000000000..d3a58c758 --- /dev/null +++ b/src/plugins/directshow/directshow_camera.json @@ -0,0 +1,3 @@ +{ + "Keys": ["org.qt-project.qt.camera"] +} diff --git a/src/plugins/directshow/dsserviceplugin.h b/src/plugins/directshow/dsserviceplugin.h index f3f89d7cd..82f1acd6d 100644 --- a/src/plugins/directshow/dsserviceplugin.h +++ b/src/plugins/directshow/dsserviceplugin.h @@ -54,7 +54,13 @@ class DSServicePlugin Q_OBJECT Q_INTERFACES(QMediaServiceSupportedDevicesInterface) Q_INTERFACES(QMediaServiceFeaturesInterface) + // The player service provided by the WMF-plugin should preferably be used. + // DirectShow should then only provide the camera (see QTBUG-29172, QTBUG-29175). +#ifdef QMEDIA_DIRECTSHOW_PLAYER Q_PLUGIN_METADATA(IID "org.qt-project.qt.mediaserviceproviderfactory/5.0" FILE "directshow.json") +#else + Q_PLUGIN_METADATA(IID "org.qt-project.qt.mediaserviceproviderfactory/5.0" FILE "directshow_camera.json") +#endif public: QMediaService* create(QString const& key); |