diff options
author | Yoann Lopes <yoann.lopes@digia.com> | 2014-04-07 14:24:51 +0200 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@digia.com> | 2014-07-11 18:47:12 +0200 |
commit | 389d66b3ed5e2d798e9fb124064523239c393ad8 (patch) | |
tree | e297dd513433e1f2c117083af1d0b46cb625865d /src/plugins/directshow/camera/dscameraservice.cpp | |
parent | f352e44df9907bbefe4c962a06c7a7c87516dd90 (diff) |
DirectShow: Refactor camera backend.
Almost entire rewrite of the camera backend. It doesn't provide new
features but is more stable and behave as it should.
- Correctly report camera state and status
- Correctly report if the camera is ready to capture
- Emit imageExposed() signal
- Save captured images in an appropriate directory
- Images can be captured even without a viewport
- Better error handling
Removed the custom QVideoWidgetControl as it doesn't provide anything more
than the QVideoWidget's renderer control fallback.
Task-number: QTBUG-33782
Change-Id: I9baf6f83e7c69619f20a101921f7865a1c90d5e4
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Diffstat (limited to 'src/plugins/directshow/camera/dscameraservice.cpp')
-rw-r--r-- | src/plugins/directshow/camera/dscameraservice.cpp | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/src/plugins/directshow/camera/dscameraservice.cpp b/src/plugins/directshow/camera/dscameraservice.cpp index 9d99c6dd6..b8a9b4aa7 100644 --- a/src/plugins/directshow/camera/dscameraservice.cpp +++ b/src/plugins/directshow/camera/dscameraservice.cpp @@ -42,11 +42,6 @@ #include <QtCore/qvariant.h> #include <QtCore/qdebug.h> -#if defined(HAVE_WIDGETS) -#include <QtWidgets/qwidget.h> -#include <QVideoWidgetControl> -#endif - #include "dscameraservice.h" #include "dscameracontrol.h" #include "dscamerasession.h" @@ -54,28 +49,16 @@ #include "dsvideodevicecontrol.h" #include "dsimagecapturecontrol.h" -#if defined(HAVE_WIDGETS) -#include "dsvideowidgetcontrol.h" -#endif - QT_BEGIN_NAMESPACE DSCameraService::DSCameraService(QObject *parent): QMediaService(parent) -#if defined(HAVE_WIDGETS) - , m_viewFinderWidget(0) - #endif , m_videoRenderer(0) { m_session = new DSCameraSession(this); - m_control = new DSCameraControl(m_session); - m_videoDevice = new DSVideoDeviceControl(m_session); - m_imageCapture = new DSImageCaptureControl(m_session); - - m_device = QByteArray("default"); } DSCameraService::~DSCameraService() @@ -84,9 +67,6 @@ DSCameraService::~DSCameraService() delete m_videoDevice; delete m_videoRenderer; delete m_imageCapture; -#if defined(HAVE_WIDGETS) - delete m_viewFinderWidget; -#endif delete m_session; } @@ -98,21 +78,8 @@ QMediaControl* DSCameraService::requestControl(const char *name) if (qstrcmp(name, QCameraImageCaptureControl_iid) == 0) return m_imageCapture; -#if defined(HAVE_WIDGETS) - if (qstrcmp(name, QVideoWidgetControl_iid) == 0) { - if (!m_viewFinderWidget && !m_videoRenderer) { - m_viewFinderWidget = new DSVideoWidgetControl(m_session); - return m_viewFinderWidget; - } - } -#endif - if (qstrcmp(name,QVideoRendererControl_iid) == 0) { -#if defined(HAVE_WIDGETS) - if (!m_videoRenderer && !m_viewFinderWidget) { -#else if (!m_videoRenderer) { -#endif m_videoRenderer = new DSVideoRendererControl(m_session, this); return m_videoRenderer; } @@ -131,14 +98,6 @@ void DSCameraService::releaseControl(QMediaControl *control) m_videoRenderer = 0; return; } - -#if defined(HAVE_WIDGETS) - if (control == m_viewFinderWidget) { - delete m_viewFinderWidget; - m_viewFinderWidget = 0; - return; - } -#endif } QT_END_NAMESPACE |