summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorDaniel Nicoletti <dantti12@gmail.com>2016-09-21 11:28:54 -0300
committerYoann Lopes <yoann.lopes@qt.io>2016-09-23 10:03:41 +0000
commitb7b7f0abde7b12c9842a26d19c4bdff8436e5343 (patch)
treefb659dc9cb17b16797f41548665064eeffdb6d88 /src/plugins
parent0d3434fd0491d8d37dc0286b9d8ec8a454ba726b (diff)
GStreamer: Support video probe on QCamera
Change-Id: I54889a72346da24654c8a0618056c14999ecf71e Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinservice.cpp3
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinsession.cpp7
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinsession.h10
3 files changed, 16 insertions, 4 deletions
diff --git a/src/plugins/gstreamer/camerabin/camerabinservice.cpp b/src/plugins/gstreamer/camerabin/camerabinservice.cpp
index d9131e545..2be4e345a 100644
--- a/src/plugins/gstreamer/camerabin/camerabinservice.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinservice.cpp
@@ -189,6 +189,9 @@ QMediaControl *CameraBinService::requestControl(const char *name)
}
}
+ if (qstrcmp(name, QMediaVideoProbeControl_iid) == 0)
+ return m_captureSession->videoProbe();
+
if (qstrcmp(name,QAudioInputSelectorControl_iid) == 0)
return m_audioInputSelector;
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
index 3cb4c6161..64c8780d3 100644
--- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
@@ -674,6 +674,8 @@ QCameraViewfinderSettings CameraBinSession::viewfinderSettings() const
void CameraBinSession::ViewfinderProbe::probeCaps(GstCaps *caps)
{
+ QGstreamerVideoProbeControl::probeCaps(caps);
+
// Update actual viewfinder settings on viewfinder caps change
const GstStructure *s = gst_caps_get_structure(caps, 0);
const QPair<qreal, qreal> frameRate = QGstUtils::structureFrameRateRange(s);
@@ -1074,6 +1076,11 @@ bool CameraBinSession::processBusMessage(const QGstreamerMessage &message)
return false;
}
+QGstreamerVideoProbeControl *CameraBinSession::videoProbe()
+{
+ return &m_viewfinderProbe;
+}
+
QString CameraBinSession::currentContainerFormat() const
{
if (!m_muxer)
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.h b/src/plugins/gstreamer/camerabin/camerabinsession.h
index 44faaf701..41398087d 100644
--- a/src/plugins/gstreamer/camerabin/camerabinsession.h
+++ b/src/plugins/gstreamer/camerabin/camerabinsession.h
@@ -51,7 +51,7 @@
#endif
#include <private/qgstreamerbushelper_p.h>
-#include <private/qgstreamerbufferprobe_p.h>
+#include <private/qgstreamervideoprobecontrol_p.h>
#include <private/qmediastoragelocation_p.h>
#include "qcamera.h"
@@ -164,6 +164,8 @@ public:
bool processSyncMessage(const QGstreamerMessage &message);
bool processBusMessage(const QGstreamerMessage &message);
+ QGstreamerVideoProbeControl *videoProbe();
+
signals:
void statusChanged(QCamera::Status status);
void pendingStateChanged(QCamera::State state);
@@ -258,14 +260,14 @@ private:
bool m_inputDeviceHasChanged;
bool m_usingWrapperCameraBinSrc;
- class ViewfinderProbe : public QGstreamerBufferProbe {
+ class ViewfinderProbe : public QGstreamerVideoProbeControl {
public:
ViewfinderProbe(CameraBinSession *s)
- : QGstreamerBufferProbe(QGstreamerBufferProbe::ProbeCaps)
+ : QGstreamerVideoProbeControl(s)
, session(s)
{}
- void probeCaps(GstCaps *caps);
+ void probeCaps(GstCaps *caps) override;
private:
CameraBinSession * const session;