diff options
author | Daniel Nicoletti <dantti12@gmail.com> | 2016-09-21 11:28:54 -0300 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@qt.io> | 2016-09-23 10:03:41 +0000 |
commit | b7b7f0abde7b12c9842a26d19c4bdff8436e5343 (patch) | |
tree | fb659dc9cb17b16797f41548665064eeffdb6d88 /src/plugins/gstreamer/camerabin | |
parent | 0d3434fd0491d8d37dc0286b9d8ec8a454ba726b (diff) |
GStreamer: Support video probe on QCamera
Change-Id: I54889a72346da24654c8a0618056c14999ecf71e
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
Diffstat (limited to 'src/plugins/gstreamer/camerabin')
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinservice.cpp | 3 | ||||
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinsession.cpp | 7 | ||||
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinsession.h | 10 |
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; |