From b7b7f0abde7b12c9842a26d19c4bdff8436e5343 Mon Sep 17 00:00:00 2001 From: Daniel Nicoletti Date: Wed, 21 Sep 2016 11:28:54 -0300 Subject: GStreamer: Support video probe on QCamera Change-Id: I54889a72346da24654c8a0618056c14999ecf71e Reviewed-by: Yoann Lopes --- src/plugins/gstreamer/camerabin/camerabinservice.cpp | 3 +++ src/plugins/gstreamer/camerabin/camerabinsession.cpp | 7 +++++++ 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 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 -#include +#include #include #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; -- cgit v1.2.3