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>
This commit is contained in:
committed by
The Qt Project
parent
f4348fe3ae
commit
b604d96ba8
@@ -43,13 +43,6 @@
|
||||
#include <d3d9.h>
|
||||
#include <vmr9.h>
|
||||
|
||||
#pragma include_alias("dxtrans.h","qedit.h")
|
||||
#define __IDxtCompositor_INTERFACE_DEFINED__
|
||||
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
|
||||
#define __IDxtJpeg_INTERFACE_DEFINED__
|
||||
#define __IDxtKey_INTERFACE_DEFINED__
|
||||
#include <qedit.h>
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
return 0;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -69,7 +69,6 @@
|
||||
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
|
||||
#define __IDxtJpeg_INTERFACE_DEFINED__
|
||||
#define __IDxtKey_INTERFACE_DEFINED__
|
||||
#include <qedit.h>
|
||||
|
||||
struct ICaptureGraphBuilder2;
|
||||
struct ISampleGrabber;
|
||||
|
||||
@@ -24,4 +24,5 @@ win32-g++ {
|
||||
include(camera/camera.pri)
|
||||
|
||||
OTHER_FILES += \
|
||||
directshow.json
|
||||
directshow.json \
|
||||
directshow_camera.json
|
||||
|
||||
3
src/plugins/directshow/directshow_camera.json
Normal file
3
src/plugins/directshow/directshow_camera.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"Keys": ["org.qt-project.qt.camera"]
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -12,3 +12,4 @@ SUBDIRS += \
|
||||
qsoundeffect \
|
||||
qsound
|
||||
|
||||
!qtHaveModule(widgets): SUBDIRS -= qcamerabackend
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
TARGET = tst_qcamerabackend
|
||||
|
||||
QT += multimedia-private testlib
|
||||
# DirectShow plugin requires widgets.
|
||||
QT += multimedia-private widgets testlib
|
||||
|
||||
# This is more of a system test
|
||||
CONFIG += testcase
|
||||
|
||||
Reference in New Issue
Block a user