From: Mohammed Sameer Date: Sun, 28 Jul 2013 18:20:11 +0000 (+0300) Subject: Kill QtCamViewfinderRendererGeneric X-Git-Url: http://cgit.sxemacs.org/?p=harmattan%2Fcameraplus;a=commitdiff_plain;h=6b5f7f668953d5a541d1c6bb02d07f00d26acb02 Kill QtCamViewfinderRendererGeneric It's broken and unused. --- diff --git a/lib/lib.pro b/lib/lib.pro index 0f27035..3e27453 100644 --- a/lib/lib.pro +++ b/lib/lib.pro @@ -13,11 +13,11 @@ PKGCONFIG = gstreamer-0.10 gstreamer-interfaces-0.10 gstreamer-video-0.10 gstrea gstreamer-pbutils-0.10 harmattan:PKGCONFIG += meego-gstreamer-interfaces-0.10 +nemo:PKGCONFIG += nemo-gstreamer-interfaces-0.10 HEADERS += qtcamconfig.h qtcamera.h qtcamscanner.h qtcamdevice.h qtcamviewfinder.h \ qtcammode.h qtcamgstreamermessagehandler.h qtcamgstreamermessagelistener.h \ - qtcamviewfinderrenderer.h \ - qtcamviewfinderrenderergeneric.h qtcamimagesettings.h qtcamvideosettings.h \ + qtcamviewfinderrenderer.h qtcamimagesettings.h qtcamvideosettings.h \ qtcamimagemode.h qtcamvideomode.h qtcammetadata.h qtcamcapability.h \ qtcamzoom.h qtcamflash.h qtcamscene.h qtcamevcomp.h qtcamvideotorch.h \ qtcamwhitebalance.h qtcamcolortone.h qtcamflickerreduction.h \ @@ -27,8 +27,7 @@ HEADERS += qtcamconfig.h qtcamera.h qtcamscanner.h qtcamdevice.h qtcamviewfinder SOURCES += qtcamconfig.cpp qtcamera.cpp qtcamscanner.cpp qtcamdevice.cpp qtcamviewfinder.cpp \ qtcammode.cpp qtcamgstreamermessagehandler.cpp qtcamgstreamermessagelistener.cpp \ - qtcamviewfinderrenderer.cpp \ - qtcamviewfinderrenderergeneric.cpp qtcamimagesettings.cpp qtcamvideosettings.cpp \ + qtcamviewfinderrenderer.cpp qtcamimagesettings.cpp qtcamvideosettings.cpp \ qtcamimagemode.cpp qtcamvideomode.cpp qtcammetadata.cpp qtcamcapability.cpp \ qtcamzoom.cpp qtcamflash.cpp qtcamscene.cpp qtcamevcomp.cpp qtcamvideotorch.cpp \ qtcamwhitebalance.cpp qtcamcolortone.cpp qtcamflickerreduction.cpp \ diff --git a/lib/qtcamconfig.h b/lib/qtcamconfig.h index a5eac06..7ae3a25 100644 --- a/lib/qtcamconfig.h +++ b/lib/qtcamconfig.h @@ -32,7 +32,6 @@ #define SCANNER_TYPE_ENUM "enum" #define RENDERER_TYPE_MEEGO "meego" -#define RENDERER_TYPE_GENERIC "generic" #ifndef DATA_DIR #define DATA_DIR "/usr/share/qtcamera/config/" diff --git a/lib/qtcamviewfinderrenderer.cpp b/lib/qtcamviewfinderrenderer.cpp index ff92c4d..9dd7028 100644 --- a/lib/qtcamviewfinderrenderer.cpp +++ b/lib/qtcamviewfinderrenderer.cpp @@ -38,8 +38,8 @@ QtCamViewfinderRenderer::~QtCamViewfinderRenderer() { QtCamViewfinderRenderer *QtCamViewfinderRenderer::create(QtCamConfig *config, QObject *parent) { QString key = config->viewfinderRenderer(); if (!_renderers.contains(key)) { - qCritical() << "Unknown renderer" << key << "will fallback to" << RENDERER_TYPE_GENERIC; - key = RENDERER_TYPE_GENERIC; + qCritical() << "Unknown renderer" << key; + return 0; } QObject *obj = _renderers[key].newInstance(Q_ARG(QtCamConfig *, config), diff --git a/lib/qtcamviewfinderrenderergeneric.cpp b/lib/qtcamviewfinderrenderergeneric.cpp deleted file mode 100644 index 9c8d40a..0000000 --- a/lib/qtcamviewfinderrenderergeneric.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/*! - * This file is part of CameraPlus. - * - * Copyright (C) 2012-2013 Mohammed Sameer - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "qtcamviewfinderrenderergeneric.h" -#include -#include -#include -#include "qtcamconfig.h" - -QT_CAM_VIEWFINDER_RENDERER(RENDERER_TYPE_GENERIC, QtCamViewfinderRendererGeneric); - -#define CAPS "video/x-raw-rgb, bpp = (int) 32, depth = (int) 24, red_mask = (int) 65280, green_mask = (int) 16711680, blue_mask = (int) -16777216" - -// TODO: this needs to be debugged or rewritten. There are race conditions. -QtCamViewfinderRendererGeneric::QtCamViewfinderRendererGeneric(QtCamConfig *config, - QObject *parent) : - QtCamViewfinderRenderer(config, parent), m_elem(0), m_sink(0), m_id(0) { - -} - -QtCamViewfinderRendererGeneric::~QtCamViewfinderRendererGeneric() { - m_mutex.lock(); - - if (m_elem) { - g_object_remove_toggle_ref(G_OBJECT(m_elem), (GToggleNotify)sink_notify, this); - m_elem = 0; - - g_signal_handler_disconnect(m_sink, m_id); - } - - m_mutex.unlock(); -} - -void QtCamViewfinderRendererGeneric::paint(QPainter *painter) { - // TODO: scale and keep aspect ratio. - m_mutex.lock(); - - if (!m_image.isNull()) { - painter->drawImage(QRectF(QPointF(0, 0), m_size), m_image); - } - - m_mutex.unlock(); -} - -void QtCamViewfinderRendererGeneric::resize(const QSizeF& size) { - m_size = size; -} - -void QtCamViewfinderRendererGeneric::reset() { - m_image = QImage(); -} - -GstElement *QtCamViewfinderRendererGeneric::sinkElement() { - if (!m_elem) { - m_elem = gst_bin_new("QtCamViewfinderRendererGenericBin"); - if (!m_elem) { - qCritical() << "Failed to create sink bin"; - return 0; - } - - GstElement *sink = gst_element_factory_make("fakesink", "QtCamViewfinderRendererGenericSink"); - if (!sink) { - qCritical() << "Failed to create fakesink"; - gst_object_unref(m_elem); - m_elem = 0; - return 0; - } - - g_object_set(G_OBJECT(sink), "signal-handoffs", TRUE, "sync", TRUE, NULL); - m_id = g_signal_connect(sink, "handoff", G_CALLBACK(on_gst_buffer), this); - - GstElement *csp = gst_element_factory_make("ffmpegcolorspace", - "QtCamViewfinderRendererGenericCsp"); - if (!csp) { - qCritical() << "Failed to create ffmpegcolorspace"; - gst_object_unref(sink); - gst_object_unref(m_elem); - m_elem = 0; - return 0; - } - - GstElement *filter = gst_element_factory_make("capsfilter", - "QtCamViewfinderRendererGenericCapsFilter"); - if (!filter) { - qCritical() << "Failed to create capsfilter"; - gst_object_unref(sink); - gst_object_unref(csp); - gst_object_unref(m_elem); - m_elem = 0; - return 0; - } - - GstCaps *caps = gst_caps_from_string(CAPS); - g_object_set(filter, "caps", caps, NULL); - gst_caps_unref(caps); - - gst_bin_add_many(GST_BIN(m_elem), csp, filter, sink, NULL); - gst_element_link_many(csp, filter, sink, NULL); - - GstPad *pad = gst_element_get_static_pad(csp, "sink"); - gst_element_add_pad(m_elem, gst_ghost_pad_new("sink", pad)); - gst_object_unref(pad); - - g_object_add_toggle_ref(G_OBJECT(m_elem), (GToggleNotify)sink_notify, this); - - m_sink = sink; - } - - return m_elem; -} - -QRectF QtCamViewfinderRendererGeneric::renderArea() { - // TODO: calculate this and emit renderAreaChanged() signal when needed - return QRectF(); -} - -QSizeF QtCamViewfinderRendererGeneric::videoResolution() { - // TODO: - - return QSizeF(); -} - -void QtCamViewfinderRendererGeneric::on_gst_buffer(GstElement *element, - GstBuffer *buf, GstPad *pad, - QtCamViewfinderRendererGeneric *q) { - - Q_UNUSED(element); - - q->m_mutex.lock(); - - if (!q->m_elem) { - q->m_mutex.unlock(); - return; - } - - int width, height; - - if (!gst_video_get_size(pad, &width, &height)) { - return; - } - - QImage image(buf->data, width, height, QImage::Format_RGB32); - - q->m_image = image.copy(); - - QMetaObject::invokeMethod(q, "updateRequested", Qt::QueuedConnection); - - q->m_mutex.unlock(); -} - -void QtCamViewfinderRendererGeneric::sink_notify(QtCamViewfinderRendererGeneric *q, - GObject *object, - gboolean is_last_ref) { - - Q_UNUSED(object); - - if (is_last_ref) { - g_object_remove_toggle_ref(G_OBJECT(q->m_elem), (GToggleNotify)sink_notify, q); - q->m_elem = 0; - q->m_sink = 0; - } -} diff --git a/lib/qtcamviewfinderrenderergeneric.h b/lib/qtcamviewfinderrenderergeneric.h deleted file mode 100644 index 9b3fee8..0000000 --- a/lib/qtcamviewfinderrenderergeneric.h +++ /dev/null @@ -1,60 +0,0 @@ -// -*- c++ -*- - -/*! - * This file is part of CameraPlus. - * - * Copyright (C) 2012-2013 Mohammed Sameer - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef QT_CAM_VIEWFINDER_RENDERER_GENERIC_H -#define QT_CAM_VIEWFINDER_RENDERER_GENERIC_H - -#include "qtcamviewfinderrenderer.h" -#include -#include - -class QtCamViewfinderRendererGeneric : public QtCamViewfinderRenderer { - Q_OBJECT - -public: - Q_INVOKABLE QtCamViewfinderRendererGeneric(QtCamConfig *config, QObject *parent = 0); - - ~QtCamViewfinderRendererGeneric(); - - virtual void paint(QPainter *painter); - virtual void resize(const QSizeF& size); - virtual void reset(); - virtual GstElement *sinkElement(); - QRectF renderArea(); - QSizeF videoResolution(); - -private: - static void on_gst_buffer(GstElement *element, GstBuffer *buf, GstPad *pad, - QtCamViewfinderRendererGeneric *q); - - static void sink_notify(QtCamViewfinderRendererGeneric *q, GObject *object, - gboolean is_last_ref); - - GstElement *m_elem; - GstElement *m_sink; - QImage m_image; - QMutex m_mutex; - QSizeF m_size; - unsigned long m_id; -}; - -#endif /* QT_CAM_VIEWFINDER_RENDERER_GENERIC_H */