2 * This file is part of QMAFW
4 * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights
7 * Contact: Visa Smolander <visa.smolander@nokia.com>
9 * This software, including documentation, is protected by copyright controlled
10 * by Nokia Corporation. All rights are reserved. Copying, including
11 * reproducing, storing, adapting or translating, any or all of this material
12 * requires the prior written consent of Nokia Corporation. This material also
13 * contains confidential information which may not be disclosed to others
14 * without the prior written consent of Nokia.
22 #include <QCoreApplication>
24 #include <MafwInternalRegistry.h>
26 #include "MafwGstRendererPlugin.h"
27 #include "MafwGstRenderer.h"
33 const QString PLUGIN_NAME = "MafwGstRendererPlugin";
34 const QString RENDERER_UUID = "mafw_gst_renderer";
35 const QString DBUS_WRAPPER_NAME = "qmafw-dbus-wrapper";
36 const QString RENDERER_PLUGIN_CONFIG_FILE = "/usr/share/qmafw/mafw-gst-renderer-plugin.conf";
39 MafwGstRendererPlugin::~MafwGstRendererPlugin()
41 qDebug() << __PRETTY_FUNCTION__;
42 for(int i = 0; i < m_rendererIds.count(); i++)
44 m_registry->removeExtension(m_rendererIds.at(i));
48 void MafwGstRendererPlugin::initialize(MafwInternalRegistry* registry)
51 qDebug() << "mafw-gst-renderer revision:" << revision;
52 qDebug() << "mafw-gst-renderer library builtime:" << build_time;
57 m_registry = registry;
59 QString rendererArrayKey;
60 QString appname = QCoreApplication::applicationName();
61 // appname can contain full path to config file
62 if(appname.endsWith(DBUS_WRAPPER_NAME))
64 // We are loading out-process renderers from config file
65 rendererArrayKey = "renderers";
66 loadRenderers(rendererArrayKey);
70 // We are loading in-process renderers from config file
71 rendererArrayKey = "in-process-renderers";
72 loadRenderers(rendererArrayKey);
75 // if there are no gst-renderers in config file, we create a "basic" gst-renderer
76 if(m_rendererIds.isEmpty())
78 MafwGstRenderer *rnd = new MafwGstRenderer(RENDERER_UUID,
80 "QMAFW GStreamer Renderer",
83 QSettings settings(RENDERER_PLUGIN_CONFIG_FILE, QSettings::NativeFormat);
85 if(rnd->initialize(&settings))
87 m_registry->addRenderer(rnd);
88 m_rendererIds.append(RENDERER_UUID);
92 qCritical() << "Failed to initialize QMAFW GStreamer Renderer";
98 void MafwGstRendererPlugin::loadRenderers(const QString& rendererArrayKey)
100 QSettings settings(RENDERER_PLUGIN_CONFIG_FILE, QSettings::NativeFormat);
102 QString friendlyname;
104 QList<MafwGstRenderer*> rnds;
106 // Configuration file contains the array of renderer names and uuids as string.
107 // beginReadArray returns size of the array.
108 int size = settings.beginReadArray(rendererArrayKey);
109 for(int i = 0; i < size; i++)
111 settings.setArrayIndex(i);
112 id = settings.value("Id").toString();
113 friendlyname = settings.value("FriendlyName").toString();
114 MafwGstRenderer *rnd = new MafwGstRenderer(id,
122 Q_FOREACH( MafwGstRenderer *rnd, rnds )
124 if(rnd->initialize(&settings))
126 m_registry->addRenderer(rnd);
127 m_rendererIds.append(rnd->uuid());
131 qCritical() << "Failed to initialize" << rnd->name();
137 QString MafwGstRendererPlugin::name() const
142 /*****************************************************************************
144 ****************************************************************************/
145 Q_EXPORT_PLUGIN2(qmafw-gst-renderer-plugin, MafwGstRendererPlugin)