#define GCONF_OSSO_AF "/system/osso/af"
#define GCONF_BATTERY_COVER_OPEN "/system/osso/af/mmc-cover-open"
+#define GCONF_MAFW_GST_SUBTITLES_RENDERER "/system/mafw/mafw-gst-subtitles-renderer"
#define HAL_VIDEOOUT_UDI "/org/freedesktop/Hal/devices" \
"/platform_soc_audio_logicaldev_input"
GConfEntry *entry,
MafwGstRenderer *renderer);
+static void _autoload_subtitles_changed_cb(GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ MafwGstRenderer *renderer);
+
+static void _subtitle_font_changed_cb(GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ MafwGstRenderer *renderer);
+
/*----------------------------------------------------------------------------
Gnome VFS notifications
----------------------------------------------------------------------------*/
* Registers the plugin descriptor making this plugin available to the
* framework and applications
*/
-G_MODULE_EXPORT MafwPluginDescriptor mafw_gst_renderer_plugin_description = {
+G_MODULE_EXPORT MafwPluginDescriptor mafw_gst_subtitles_renderer_plugin_description = {
{ .name = MAFW_GST_RENDERER_PLUGIN_NAME },
.initialize = mafw_gst_renderer_initialize,
.deinitialize = mafw_gst_renderer_deinitialize,
GObjectClass *gclass = NULL;
MafwRendererClass *renderer_class = NULL;
const gchar *preloaded_plugins[] = {"playback", "uridecodebin",
- "coreelements", "typefindfunctions", "omx", "selector",
- "autodetect", "pulseaudio", "audioconvert", "audioresample",
- "xvimagesink", "ffmpegcolorspace", "videoscale", NULL};
+ "coreelements", "typefindfunctions", "dsp",
+ "pulseaudio", "xvimagesink", NULL};
gint i = 0;
GObject *plugin;
g_return_if_fail(renderer != NULL);
mafw_extension_add_property(MAFW_EXTENSION(self), "volume", G_TYPE_UINT);
+#ifdef MAFW_GST_RENDERER_ENABLE_MUTE
mafw_extension_add_property(MAFW_EXTENSION(self), "mute", G_TYPE_BOOLEAN);
+#endif
mafw_extension_add_property(MAFW_EXTENSION(self), "xid", G_TYPE_UINT);
mafw_extension_add_property(MAFW_EXTENSION(self), "error-policy", G_TYPE_UINT);
MAFW_EXTENSION_SUPPORTS_AUTOPAINT(self);
g_error_free(error);
}
+ gconf_client_add_dir(renderer->gconf_client,
+ GCONF_MAFW_GST_SUBTITLES_RENDERER,
+ GCONF_CLIENT_PRELOAD_ONELEVEL,
+ &error);
+ if (error) {
+ g_warning("%s", error->message);
+ g_error_free(error);
+ error = NULL;
+ }
+
+ gconf_client_notify_add(renderer->gconf_client,
+ GCONF_MAFW_GST_SUBTITLES_RENDERER "/autoload_subtitles",
+ (GConfClientNotifyFunc) _autoload_subtitles_changed_cb,
+ renderer,
+ NULL, &error);
+ if (error) {
+ g_warning("%s", error->message);
+ g_error_free(error);
+ }
+
+ gconf_client_notify_add(renderer->gconf_client,
+ GCONF_MAFW_GST_SUBTITLES_RENDERER "/subtitle_encoding",
+ (GConfClientNotifyFunc) _subtitle_font_changed_cb,
+ renderer,
+ NULL, &error);
+ if (error) {
+ g_warning("%s", error->message);
+ g_error_free(error);
+ }
+
+ gconf_client_notify_add(renderer->gconf_client,
+ GCONF_MAFW_GST_SUBTITLES_RENDERER "/subtitle_font",
+ (GConfClientNotifyFunc) _subtitle_font_changed_cb,
+ renderer,
+ NULL, &error);
+ if (error) {
+ g_warning("%s", error->message);
+ g_error_free(error);
+ }
+
+ if (self->worker->pipeline) {
+ gconf_client_notify(renderer->gconf_client,
+ GCONF_MAFW_GST_SUBTITLES_RENDERER "/autoload_subtitles");
+
+ gconf_client_notify(renderer->gconf_client,
+ GCONF_MAFW_GST_SUBTITLES_RENDERER "/subtitle_encoding");
+
+ gconf_client_notify(renderer->gconf_client,
+ GCONF_MAFW_GST_SUBTITLES_RENDERER "/subtitle_font");
+ }
+
if (gnome_vfs_init()) {
GnomeVFSVolumeMonitor *monitor = gnome_vfs_get_volume_monitor();
g_signal_connect(monitor, "volume-pre-unmount",
}
}
+static void _autoload_subtitles_changed_cb(GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ MafwGstRenderer *renderer)
+{
+ GConfValue *value = NULL;
+ gboolean enabled = FALSE;
+
+ value = gconf_entry_get_value(entry);
+ if (value == NULL)
+ return;
+
+ enabled = gconf_value_get_bool(value);
+
+ if (enabled)
+ renderer->worker->subtitles.enabled = TRUE;
+ else
+ renderer->worker->subtitles.enabled = FALSE;
+}
+
+static void _subtitle_font_changed_cb(GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ MafwGstRenderer *renderer)
+{
+ const gchar *key = NULL;
+ GConfValue *value = NULL;
+ const gchar *str_value = NULL;
+
+ key = gconf_entry_get_key(entry);
+
+ /* Only key without absolute path is required */
+ key += strlen(GCONF_MAFW_GST_SUBTITLES_RENDERER) + 1;
+
+ value = gconf_entry_get_value(entry);
+ if (value)
+ str_value = gconf_value_get_string(value);
+ else
+ str_value = NULL;
+
+ if (strcmp(key, "subtitle_font") == 0) {
+ if (renderer->worker->subtitles.font)
+ g_free(renderer->worker->subtitles.font);
+
+ if (str_value)
+ renderer->worker->subtitles.font = g_strdup(str_value);
+ else
+ renderer->worker->subtitles.font = NULL;
+ } else if (strcmp(key, "subtitle_encoding") == 0) {
+ if (renderer->worker->subtitles.encoding)
+ g_free(renderer->worker->subtitles.encoding);
+
+ if (str_value)
+ renderer->worker->subtitles.encoding = g_strdup(str_value);
+ else
+ renderer->worker->subtitles.encoding = NULL;
+ } else {
+ g_warning("Wrong %s key, %s", GCONF_MAFW_GST_SUBTITLES_RENDERER, key);
+ }
+}
+
/*----------------------------------------------------------------------------
Gnome VFS notifications
----------------------------------------------------------------------------*/
renderer->worker,
g_value_get_boolean(value));
}
+ else if (!strcmp(key, MAFW_PROPERTY_RENDERER_COLORKEY)) {
+ mafw_gst_renderer_worker_set_colorkey(
+ renderer->worker,
+ g_value_get_int(value));
+ }
#ifdef HAVE_GDKPIXBUF
else if (!strcmp(key,
MAFW_PROPERTY_GST_RENDERER_CURRENT_FRAME_ON_PAUSE)) {