X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=qmafw-gst-subtitles-renderer%2Fsrc%2FMafwGstRendererPlugin.cpp;fp=qmafw-gst-subtitles-renderer%2Fsrc%2FMafwGstRendererPlugin.cpp;h=734ddd96b7e6e429efe290c0d06bb1b929637dd6;hb=226d35244df85a27c332d3a3ded1b25b3c7f4951;hp=0000000000000000000000000000000000000000;hpb=57ba96e291a055f69dbfd4ae9f1ae2390e36986e;p=mafwsubrenderer diff --git a/qmafw-gst-subtitles-renderer/src/MafwGstRendererPlugin.cpp b/qmafw-gst-subtitles-renderer/src/MafwGstRendererPlugin.cpp new file mode 100644 index 0000000..734ddd9 --- /dev/null +++ b/qmafw-gst-subtitles-renderer/src/MafwGstRendererPlugin.cpp @@ -0,0 +1,145 @@ +/* + * This file is part of QMAFW + * + * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights + * reserved. + * + * Contact: Visa Smolander + * + * This software, including documentation, is protected by copyright controlled + * by Nokia Corporation. All rights are reserved. Copying, including + * reproducing, storing, adapting or translating, any or all of this material + * requires the prior written consent of Nokia Corporation. This material also + * contains confidential information which may not be disclosed to others + * without the prior written consent of Nokia. + * + */ + +#include +#include +#include +#include +#include + +#include + +#include "MafwGstRendererPlugin.h" +#include "MafwGstRenderer.h" + +#ifdef _VERSION_INFO +#include "version.h" +#endif + +const QString PLUGIN_NAME = "MafwGstRendererPlugin"; +const QString RENDERER_UUID = "mafw_gst_renderer"; +const QString DBUS_WRAPPER_NAME = "qmafw-dbus-wrapper"; +const QString RENDERER_PLUGIN_CONFIG_FILE = "/usr/share/qmafw/mafw-gst-renderer-plugin.conf"; + + +MafwGstRendererPlugin::~MafwGstRendererPlugin() +{ + qDebug() << __PRETTY_FUNCTION__; + for(int i = 0; i < m_rendererIds.count(); i++) + { + m_registry->removeExtension(m_rendererIds.at(i)); + } +} + +void MafwGstRendererPlugin::initialize(MafwInternalRegistry* registry) +{ +#ifdef _VERSION_INFO + qDebug() << "mafw-gst-renderer revision:" << revision; + qDebug() << "mafw-gst-renderer library builtime:" << build_time; +#endif + + Q_ASSERT(registry); + + m_registry = registry; + + QString rendererArrayKey; + QString appname = QCoreApplication::applicationName(); + // appname can contain full path to config file + if(appname.endsWith(DBUS_WRAPPER_NAME)) + { + // We are loading out-process renderers from config file + rendererArrayKey = "renderers"; + loadRenderers(rendererArrayKey); + } + else + { + // We are loading in-process renderers from config file + rendererArrayKey = "in-process-renderers"; + loadRenderers(rendererArrayKey); + } + + // if there are no gst-renderers in config file, we create a "basic" gst-renderer + if(m_rendererIds.isEmpty()) + { + MafwGstRenderer *rnd = new MafwGstRenderer(RENDERER_UUID, + PLUGIN_NAME, + "QMAFW GStreamer Renderer", + registry); + + QSettings settings(RENDERER_PLUGIN_CONFIG_FILE, QSettings::NativeFormat); + + if(rnd->initialize(&settings)) + { + m_registry->addRenderer(rnd); + m_rendererIds.append(RENDERER_UUID); + } + else + { + qCritical() << "Failed to initialize QMAFW GStreamer Renderer"; + delete rnd; + } + } +} + +void MafwGstRendererPlugin::loadRenderers(const QString& rendererArrayKey) +{ + QSettings settings(RENDERER_PLUGIN_CONFIG_FILE, QSettings::NativeFormat); + QString id; + QString friendlyname; + + QList rnds; + + // Configuration file contains the array of renderer names and uuids as string. + // beginReadArray returns size of the array. + int size = settings.beginReadArray(rendererArrayKey); + for(int i = 0; i < size; i++) + { + settings.setArrayIndex(i); + id = settings.value("Id").toString(); + friendlyname = settings.value("FriendlyName").toString(); + MafwGstRenderer *rnd = new MafwGstRenderer(id, + PLUGIN_NAME, + friendlyname, + m_registry); + rnds.append(rnd); + } + settings.endArray(); + + Q_FOREACH( MafwGstRenderer *rnd, rnds ) + { + if(rnd->initialize(&settings)) + { + m_registry->addRenderer(rnd); + m_rendererIds.append(rnd->uuid()); + } + else + { + qCritical() << "Failed to initialize" << rnd->name(); + delete rnd; + } + } +} + +QString MafwGstRendererPlugin::name() const +{ + return PLUGIN_NAME; +} + +/***************************************************************************** + * Plugin export + ****************************************************************************/ +Q_EXPORT_PLUGIN2(qmafw-gst-renderer-plugin, MafwGstRendererPlugin)