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();
+}
#include <QObject>
#include "qtcamimagesettings.h"
#include "qtcamvideosettings.h"
+#include <QStringList>
#define SCANNER_TYPE_V4L2 "v4l2"
#define SCANNER_TYPE_ENUM "enum"
QString videoRecordingEndedSound() const;
QString autoFocusAcquiredSound() const;
+ QStringList viewfinderFilters() const;
+
private:
QtCamConfigPrivate *d_ptr;
};
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);
#include "qtcamviewfinder.h"
#include "qtcamdevice.h"
#include "qtcammode.h"
+#include "qtcamanalysisbin.h"
class QtCamGStreamerMessageListener;
class QtCamMode;
}
}
+ void addViewfinderFilters() {
+ addElements("viewfinder-filter", conf->viewfinderFilters());
+ }
+
bool isWrapperReady() {
if (!wrapperVideoSource) {
return false;
Q_ARG(bool, d->q_ptr->isIdle()));
}
+ void addElements(const char *prop, const QStringList& elements) {
+ QList<GstElement *> 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);