summaryrefslogtreecommitdiffstats
path: root/src/plugins/directshow
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-03-10 10:27:27 +0100
committerLiang Qi <liang.qi@qt.io>2017-03-10 10:51:09 +0100
commite964e89331f2cfef99a3f63172a127b6c02a9727 (patch)
tree4c7d78573d17e523e4278027cee8fa88494366c8 /src/plugins/directshow
parentf09d36708fdab70ad51af374a65ddded64525f67 (diff)
parent6f7192a048432e4792330244b74a2a39ccd8d515 (diff)
Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts: src/plugins/gstreamer/camerabin/camerabincontainer.h Change-Id: I4942d41d69112335fe0c994002f1b32ef3aad051
Diffstat (limited to 'src/plugins/directshow')
-rw-r--r--src/plugins/directshow/camera/camera.pri4
-rw-r--r--src/plugins/directshow/directshow.pro4
-rw-r--r--src/plugins/directshow/dsserviceplugin.cpp20
-rw-r--r--src/plugins/directshow/dsserviceplugin.h3
-rw-r--r--src/plugins/directshow/player/directshowmetadatacontrol.cpp14
-rw-r--r--src/plugins/directshow/player/directshowplayerservice.cpp16
-rw-r--r--src/plugins/directshow/player/directshowvideorenderercontrol.cpp11
-rw-r--r--src/plugins/directshow/player/directshowvideorenderercontrol.h7
-rw-r--r--src/plugins/directshow/player/player.pri9
9 files changed, 35 insertions, 53 deletions
diff --git a/src/plugins/directshow/camera/camera.pri b/src/plugins/directshow/camera/camera.pri
index fb7fbd3f5..d8ee59aa9 100644
--- a/src/plugins/directshow/camera/camera.pri
+++ b/src/plugins/directshow/camera/camera.pri
@@ -1,9 +1,5 @@
INCLUDEPATH += $$PWD
-DEFINES += QMEDIA_DIRECTSHOW_CAMERA
-
-mingw: DEFINES += QT_NO_WMSDK
-
win32: DEFINES += _CRT_SECURE_NO_WARNINGS
HEADERS += \
diff --git a/src/plugins/directshow/directshow.pro b/src/plugins/directshow/directshow.pro
index cbf82afb3..35301474f 100644
--- a/src/plugins/directshow/directshow.pro
+++ b/src/plugins/directshow/directshow.pro
@@ -8,13 +8,11 @@ win32:!qtHaveModule(opengl)|qtConfig(dynamicgl) {
HEADERS += dsserviceplugin.h
SOURCES += dsserviceplugin.cpp
-!qtConfig(wmsdk): DEFINES += QT_NO_WMSDK
-
mingw: DEFINES += NO_DSHOW_STRSAFE
include(common/common.pri)
include(helpers/helpers.pri)
-!qtConfig(wmf-backend): include(player/player.pri)
+qtConfig(directshow-player): include(player/player.pri)
include(camera/camera.pri)
OTHER_FILES += \
diff --git a/src/plugins/directshow/dsserviceplugin.cpp b/src/plugins/directshow/dsserviceplugin.cpp
index 4b84841bd..9060bac7c 100644
--- a/src/plugins/directshow/dsserviceplugin.cpp
+++ b/src/plugins/directshow/dsserviceplugin.cpp
@@ -37,6 +37,7 @@
**
****************************************************************************/
+#include <QtMultimedia/private/qtmultimediaglobal_p.h>
#include <dshow.h>
#include <QtCore/qstring.h>
@@ -46,21 +47,16 @@
#include "directshowglobal.h"
#include "dsserviceplugin.h"
-#ifdef QMEDIA_DIRECTSHOW_CAMERA
#include "dsvideodevicecontrol.h"
#include <dshow.h>
#include "dscameraservice.h"
-#endif
-#ifdef QMEDIA_DIRECTSHOW_PLAYER
+#if QT_CONFIG(directshow_player)
#include "directshowplayerservice.h"
#endif
#include <qmediaserviceproviderplugin.h>
-
-#ifdef QMEDIA_DIRECTSHOW_CAMERA
-
extern const CLSID CLSID_VideoInputDeviceCategory;
@@ -76,7 +72,6 @@ extern const CLSID CLSID_VideoInputDeviceCategory;
#endif // Q_CC_MSVC
#include <windows.h>
#include <ocidl.h>
-#endif
QT_BEGIN_NAMESPACE
Q_LOGGING_CATEGORY(qtDirectShowPlugin, "qt.multimedia.plugins.directshow")
@@ -99,13 +94,11 @@ void releaseRefCount()
QMediaService* DSServicePlugin::create(QString const& key)
{
-#ifdef QMEDIA_DIRECTSHOW_CAMERA
if (key == QLatin1String(Q_MEDIASERVICE_CAMERA)) {
addRefCount();
return new DSCameraService;
}
-#endif
-#ifdef QMEDIA_DIRECTSHOW_PLAYER
+#if QT_CONFIG(directshow_player)
if (key == QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER)) {
addRefCount();
return new DirectShowPlayerService;
@@ -132,14 +125,11 @@ QMediaServiceProviderHint::Features DSServicePlugin::supportedFeatures(
QByteArray DSServicePlugin::defaultDevice(const QByteArray &service) const
{
-#ifdef QMEDIA_DIRECTSHOW_CAMERA
if (service == Q_MEDIASERVICE_CAMERA) {
const QList<DSVideoDeviceInfo> &devs = DSVideoDeviceControl::availableDevices();
if (!devs.isEmpty())
return devs.first().first;
}
-#endif
-
return QByteArray();
}
@@ -147,20 +137,17 @@ QList<QByteArray> DSServicePlugin::devices(const QByteArray &service) const
{
QList<QByteArray> result;
-#ifdef QMEDIA_DIRECTSHOW_CAMERA
if (service == Q_MEDIASERVICE_CAMERA) {
const QList<DSVideoDeviceInfo> &devs = DSVideoDeviceControl::availableDevices();
for (const DSVideoDeviceInfo &info : devs)
result.append(info.first);
}
-#endif
return result;
}
QString DSServicePlugin::deviceDescription(const QByteArray &service, const QByteArray &device)
{
-#ifdef QMEDIA_DIRECTSHOW_CAMERA
if (service == Q_MEDIASERVICE_CAMERA) {
const QList<DSVideoDeviceInfo> &devs = DSVideoDeviceControl::availableDevices();
for (const DSVideoDeviceInfo &info : devs) {
@@ -168,6 +155,5 @@ QString DSServicePlugin::deviceDescription(const QByteArray &service, const QByt
return info.second;
}
}
-#endif
return QString();
}
diff --git a/src/plugins/directshow/dsserviceplugin.h b/src/plugins/directshow/dsserviceplugin.h
index 8470fc3b5..b7ac6a86e 100644
--- a/src/plugins/directshow/dsserviceplugin.h
+++ b/src/plugins/directshow/dsserviceplugin.h
@@ -40,6 +40,7 @@
#ifndef DSSERVICEPLUGIN_H
#define DSSERVICEPLUGIN_H
+#include <QtMultimedia/private/qtmultimediaglobal_p.h>
#include "qmediaserviceproviderplugin.h"
QT_USE_NAMESPACE
@@ -56,7 +57,7 @@ class DSServicePlugin
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
+#if QT_CONFIG(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")
diff --git a/src/plugins/directshow/player/directshowmetadatacontrol.cpp b/src/plugins/directshow/player/directshowmetadatacontrol.cpp
index 6a88d76a9..45d3a958b 100644
--- a/src/plugins/directshow/player/directshowmetadatacontrol.cpp
+++ b/src/plugins/directshow/player/directshowmetadatacontrol.cpp
@@ -57,11 +57,13 @@
#include "directshowmetadatacontrol.h"
#include "directshowplayerservice.h"
-#ifndef QT_NO_WMSDK
+#include <QtMultimedia/private/qtmultimedia-config_p.h>
+
+#if QT_CONFIG(wmsdk)
#include <wmsdk.h>
#endif
-#ifndef QT_NO_SHELLITEM
+#if QT_CONFIG(wshellitem)
#include <ShlObj.h>
#include <propkeydef.h>
#include <private/qsystemlibrary_p.h>
@@ -108,7 +110,7 @@ typedef HRESULT (WINAPI *q_SHCreateItemFromParsingName)(PCWSTR, IBindCtx *, cons
static q_SHCreateItemFromParsingName sHCreateItemFromParsingName = 0;
#endif
-#ifndef QT_NO_WMSDK
+#if QT_CONFIG(wmsdk)
namespace
{
@@ -290,7 +292,7 @@ static QVariant getValue(IWMHeaderInfo *header, const wchar_t *key)
}
#endif
-#ifndef QT_NO_SHELLITEM
+#if QT_CONFIG(wshellitem)
static QVariant convertValue(const PROPVARIANT& var)
{
QVariant value;
@@ -390,7 +392,7 @@ void DirectShowMetaDataControl::updateMetadata(IFilterGraph2 *graph, IBaseFilter
{
m_metadata.clear();
-#ifndef QT_NO_SHELLITEM
+#if QT_CONFIG(wshellitem)
if (!sHCreateItemFromParsingName) {
QSystemLibrary lib(QStringLiteral("shell32"));
sHCreateItemFromParsingName = (q_SHCreateItemFromParsingName)(lib.resolve("SHCreateItemFromParsingName"));
@@ -513,7 +515,7 @@ void DirectShowMetaDataControl::updateMetadata(IFilterGraph2 *graph, IBaseFilter
goto send_event;
#endif
-#ifndef QT_NO_WMSDK
+#if QT_CONFIG(wmsdk)
IWMHeaderInfo *info = com_cast<IWMHeaderInfo>(source, IID_IWMHeaderInfo);
if (info) {
diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp
index 0b88496af..5fbb6ef05 100644
--- a/src/plugins/directshow/player/directshowplayerservice.cpp
+++ b/src/plugins/directshow/player/directshowplayerservice.cpp
@@ -55,22 +55,24 @@
#include "directshowvideorenderercontrol.h"
-#ifdef HAVE_EVR
+#if QT_CONFIG(evr)
#include "directshowevrvideowindowcontrol.h"
#endif
-#ifndef QT_NO_WMSDK
-#include <wmsdk.h>
-#endif
-
#include "qmediacontent.h"
+#include <QtMultimedia/private/qtmultimedia-config_p.h>
+
#include <QtCore/qcoreapplication.h>
#include <QtCore/qdatetime.h>
#include <QtCore/qdir.h>
#include <QtCore/qthread.h>
#include <QtCore/qvarlengtharray.h>
+#if QT_CONFIG(wmsdk)
+# include <wmsdk.h>
+#endif
+
#ifndef Q_CC_MINGW
# include <comdef.h>
#endif
@@ -197,7 +199,7 @@ QMediaControl *DirectShowPlayerService::requestControl(const char *name)
if (!m_videoRendererControl && !m_videoWindowControl) {
IBaseFilter *filter;
-#ifdef HAVE_EVR
+#if QT_CONFIG(evr)
DirectShowEvrVideoWindowControl *evrControl = new DirectShowEvrVideoWindowControl;
if ((filter = evrControl->filter()))
m_videoWindowControl = evrControl;
@@ -980,7 +982,7 @@ void DirectShowPlayerService::doSeek(QMutexLocker *locker)
int DirectShowPlayerService::bufferStatus() const
{
-#ifndef QT_NO_WMSDK
+#if QT_CONFIG(wmsdk)
QMutexLocker locker(const_cast<QMutex *>(&m_mutex));
if (IWMReaderAdvanced2 *reader = com_cast<IWMReaderAdvanced2>(
diff --git a/src/plugins/directshow/player/directshowvideorenderercontrol.cpp b/src/plugins/directshow/player/directshowvideorenderercontrol.cpp
index b86125df9..40f77e899 100644
--- a/src/plugins/directshow/player/directshowvideorenderercontrol.cpp
+++ b/src/plugins/directshow/player/directshowvideorenderercontrol.cpp
@@ -37,11 +37,12 @@
**
****************************************************************************/
+#include <QtMultimedia/private/qtmultimediaglobal_p.h>
#include "directshowvideorenderercontrol.h"
#include "videosurfacefilter.h"
-#ifdef HAVE_EVR
+#if QT_CONFIG(evr)
#include "evrcustompresenter.h"
#endif
@@ -52,7 +53,7 @@ DirectShowVideoRendererControl::DirectShowVideoRendererControl(DirectShowEventLo
, m_loop(loop)
, m_surface(0)
, m_filter(0)
-#ifdef HAVE_EVR
+#if QT_CONFIG(evr)
, m_evrPresenter(0)
#endif
{
@@ -60,7 +61,7 @@ DirectShowVideoRendererControl::DirectShowVideoRendererControl(DirectShowEventLo
DirectShowVideoRendererControl::~DirectShowVideoRendererControl()
{
-#ifdef HAVE_EVR
+#if QT_CONFIG(evr)
if (m_evrPresenter) {
m_evrPresenter->setSurface(Q_NULLPTR);
m_evrPresenter->Release();
@@ -80,7 +81,7 @@ void DirectShowVideoRendererControl::setSurface(QAbstractVideoSurface *surface)
if (m_surface == surface)
return;
-#ifdef HAVE_EVR
+#if QT_CONFIG(evr)
if (m_evrPresenter) {
m_evrPresenter->setSurface(Q_NULLPTR);
m_evrPresenter->Release();
@@ -96,7 +97,7 @@ void DirectShowVideoRendererControl::setSurface(QAbstractVideoSurface *surface)
m_surface = surface;
if (m_surface) {
-#ifdef HAVE_EVR
+#if QT_CONFIG(evr)
m_filter = com_new<IBaseFilter>(clsid_EnhancedVideoRenderer);
m_evrPresenter = new EVRCustomPresenter(m_surface);
if (!m_evrPresenter->isValid() || !qt_evr_setCustomPresenter(m_filter, m_evrPresenter)) {
diff --git a/src/plugins/directshow/player/directshowvideorenderercontrol.h b/src/plugins/directshow/player/directshowvideorenderercontrol.h
index 9d1a23933..36c5b2248 100644
--- a/src/plugins/directshow/player/directshowvideorenderercontrol.h
+++ b/src/plugins/directshow/player/directshowvideorenderercontrol.h
@@ -40,12 +40,15 @@
#ifndef DIRECTSHOWVIDEORENDERERCONTROL_H
#define DIRECTSHOWVIDEORENDERERCONTROL_H
+#include <QtMultimedia/private/qtmultimediaglobal_p.h>
#include <dshow.h>
#include "qvideorenderercontrol.h"
+#include <QtMultimedia/private/qtmultimedia-config_p.h>
+
class DirectShowEventLoop;
-#ifdef HAVE_EVR
+#if QT_CONFIG(evr)
class EVRCustomPresenter;
#endif
@@ -70,7 +73,7 @@ private:
DirectShowEventLoop *m_loop;
QAbstractVideoSurface *m_surface;
IBaseFilter *m_filter;
-#ifdef HAVE_EVR
+#if QT_CONFIG(evr)
EVRCustomPresenter *m_evrPresenter;
#endif
};
diff --git a/src/plugins/directshow/player/player.pri b/src/plugins/directshow/player/player.pri
index 7391ec7f0..59ac5a330 100644
--- a/src/plugins/directshow/player/player.pri
+++ b/src/plugins/directshow/player/player.pri
@@ -5,8 +5,6 @@ LIBS += -lgdi32
qtHaveModule(widgets): QT += widgets
-DEFINES += QMEDIA_DIRECTSHOW_PLAYER
-
HEADERS += \
$$PWD/directshowioreader.h \
$$PWD/directshowiosource.h \
@@ -30,8 +28,6 @@ SOURCES += \
$$PWD/vmr9videowindowcontrol.cpp
qtConfig(evr) {
- DEFINES += HAVE_EVR
-
include($$PWD/../../common/evr.pri)
HEADERS += \
@@ -41,8 +37,5 @@ qtConfig(evr) {
$$PWD/directshowevrvideowindowcontrol.cpp
}
-qtConfig(wshellitem) {
+qtConfig(wshellitem): \
QT += core-private
-} else {
- DEFINES += QT_NO_SHELLITEM
-}