diff options
Diffstat (limited to 'src/plugins/directshow/camera/dscamerasession.h')
-rw-r--r-- | src/plugins/directshow/camera/dscamerasession.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/plugins/directshow/camera/dscamerasession.h b/src/plugins/directshow/camera/dscamerasession.h index 90407f49e..e28015534 100644 --- a/src/plugins/directshow/camera/dscamerasession.h +++ b/src/plugins/directshow/camera/dscamerasession.h @@ -50,6 +50,7 @@ #include <QtMultimedia/qabstractvideosurface.h> #include <QtMultimedia/qvideosurfaceformat.h> #include <QtMultimedia/qcameraimageprocessingcontrol.h> +#include <QtMultimedia/qcameraimagecapture.h> #include <private/qmediastoragelocation_p.h> #include <tchar.h> @@ -76,6 +77,7 @@ struct ICaptureGraphBuilder2; QT_BEGIN_NAMESPACE class DirectShowSampleGrabber; +class DirectShowVideoProbeControl; class DSCameraSession : public QObject { @@ -120,13 +122,22 @@ public: bool getCameraControlInterface(IAMCameraControl **cameraControl) const; + bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const; + QCameraImageCapture::CaptureDestinations captureDestination() const; + void setCaptureDestination(QCameraImageCapture::CaptureDestinations destinations); + + void addVideoProbe(DirectShowVideoProbeControl *probe); + void removeVideoProbe(DirectShowVideoProbeControl *probe); + Q_SIGNALS: void statusChanged(QCamera::Status); void imageExposed(int id); void imageCaptured(int id, const QImage &preview); void imageSaved(int id, const QString &fileName); + void imageAvailable(int id, const QVideoFrame &buffer); void readyForCaptureChanged(bool); void captureError(int id, int error, const QString &errorString); + void captureDestinationChanged(QCameraImageCapture::CaptureDestinations); private Q_SLOTS: void presentFrame(); @@ -157,7 +168,7 @@ private: void setStatus(QCamera::Status status); void onFrameAvailable(double time, const QByteArray &data); - void saveCapturedImage(int id, const QImage &image, const QString &path); + void processCapturedImage(int id, QCameraImageCapture::CaptureDestinations captureDestinations, const QImage &image, const QString &path); bool createFilterGraph(); bool connectGraph(); @@ -208,6 +219,11 @@ private: int m_imageIdCounter; int m_currentImageId; QVideoFrame m_capturedFrame; + QCameraImageCapture::CaptureDestinations m_captureDestinations; + + // Video probe + QMutex m_probeMutex; + DirectShowVideoProbeControl *m_videoProbeControl; // Internal state QCamera::Status m_status; |