From 6d40928453b0d2a772cc621eb91c07bb2703fba4 Mon Sep 17 00:00:00 2001 From: Mohammed Sameer Date: Sat, 22 Dec 2012 02:22:09 +0200 Subject: [PATCH] Set viewfinder-filters --- lib/qtcamconfig.cpp | 4 ++++ lib/qtcamconfig.h | 3 +++ lib/qtcamdevice.cpp | 3 ++- lib/qtcamdevice_p.h | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/lib/qtcamconfig.cpp b/lib/qtcamconfig.cpp index 89ffbd3..930909b 100644 --- a/lib/qtcamconfig.cpp +++ b/lib/qtcamconfig.cpp @@ -211,3 +211,7 @@ QString QtCamConfig::videoRecordingEndedSound() const { QString QtCamConfig::autoFocusAcquiredSound() const { return d_ptr->conf->value("sounds/autoFocusAcquired").toString(); } + +QStringList QtCamConfig::viewfinderFilters() const { + return d_ptr->conf->value("viewfinder-filters/elements").toStringList(); +} diff --git a/lib/qtcamconfig.h b/lib/qtcamconfig.h index bdfbc11..48a4b4c 100644 --- a/lib/qtcamconfig.h +++ b/lib/qtcamconfig.h @@ -26,6 +26,7 @@ #include #include "qtcamimagesettings.h" #include "qtcamvideosettings.h" +#include #define SCANNER_TYPE_V4L2 "v4l2" #define SCANNER_TYPE_ENUM "enum" @@ -74,6 +75,8 @@ public: QString videoRecordingEndedSound() const; QString autoFocusAcquiredSound() const; + QStringList viewfinderFilters() const; + private: QtCamConfigPrivate *d_ptr; }; diff --git a/lib/qtcamdevice.cpp b/lib/qtcamdevice.cpp index 4aa1c19..bb5becc 100644 --- a/lib/qtcamdevice.cpp +++ b/lib/qtcamdevice.cpp @@ -64,10 +64,11 @@ QtCamDevice::QtCamDevice(QtCamConfig *config, const QString& name, g_object_set(d_ptr->cameraBin, "flags", flags, NULL); d_ptr->setAudioCaptureCaps(); + d_ptr->addViewfinderFilters(); // TODO: audio bitrate // TODO: video bitrate - // TODO: filters + // TODO: custom properties for jifmux, mp4mux, audio encoder, video encoder, sink & video source d_ptr->listener = new QtCamGStreamerMessageListener(gst_element_get_bus(d_ptr->cameraBin), d_ptr, this); diff --git a/lib/qtcamdevice_p.h b/lib/qtcamdevice_p.h index 45205c4..2e72654 100644 --- a/lib/qtcamdevice_p.h +++ b/lib/qtcamdevice_p.h @@ -29,6 +29,7 @@ #include "qtcamviewfinder.h" #include "qtcamdevice.h" #include "qtcammode.h" +#include "qtcamanalysisbin.h" class QtCamGStreamerMessageListener; class QtCamMode; @@ -176,6 +177,10 @@ public: } } + void addViewfinderFilters() { + addElements("viewfinder-filter", conf->viewfinderFilters()); + } + bool isWrapperReady() { if (!wrapperVideoSource) { return false; @@ -207,6 +212,36 @@ public: Q_ARG(bool, d->q_ptr->isIdle())); } + void addElements(const char *prop, const QStringList& elements) { + QList list; + + if (elements.isEmpty()) { + return; + } + + foreach (const QString& element, elements) { + GstElement *elem = gst_element_factory_make(element.toUtf8().constData(), NULL); + if (!elem) { + qWarning() << "Failed to create element" << element; + } + else { + list << elem; + } + } + + if (list.isEmpty()) { + return; + } + + GstElement *bin = qt_cam_analysis_bin_create(list, prop); + if (!bin) { + qWarning() << "Failed to create bin for" << prop; + return; + } + + g_object_set(cameraBin, prop, bin, NULL); + } + #if 0 void resetCapabilities() { g_object_set(cameraBin, "zoom", 1.0, NULL); -- 2.25.1