remove old vlc, fix build bugs and introduce m4 for generic players.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 4 Sep 2011 00:07:41 +0000 (00:07 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 4 Sep 2011 00:07:41 +0000 (00:07 +0000)
Previous commit to disable VLC messed everything, so this one fixes it doing:

 - remove old src/modules/vlc and related.
 - add EMOTION_CHECK_GENERIC_PLAYER() m4 macro
 - change previous EMOTION_BUILD_VLC to EMOTION_BUILD_GENERIC_VLC

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/emotion@63140 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

configure.ac
m4/emotion_check.m4
src/edje_external/emotion.c
src/generic_players/Makefile.am
src/generic_players/vlc/Makefile.am
src/lib/emotion_smart.c
src/modules/generic/emotion_generic.c
src/modules/vlc/Makefile.am [deleted file]
src/modules/vlc/TODO [deleted file]
src/modules/vlc/emotion_vlc.c [deleted file]
src/modules/vlc/emotion_vlc.h [deleted file]

index 8cdf17b..c67b483 100644 (file)
@@ -53,16 +53,17 @@ AC_SUBST(release_info)
 VMAJ=v_maj
 AC_SUBST(VMAJ)
 
-want_vlc="no"
 want_generic="yes"
 case "$host_os" in
    mingw* | cegcc*)
       want_xine="no"
       want_gstreamer="yes"
+      want_generic_vlc="no"
       ;;
    *)
       want_xine="yes"
       want_gstreamer="yes"
+      want_generic_vlc="yes"
       ;;
 esac
 
@@ -230,17 +231,15 @@ AC_MSG_RESULT([${have_v4l2}])
 
 EMOTION_CHECK_MODULE([Xine], [${want_xine}])
 EMOTION_CHECK_MODULE([Gstreamer], [${want_gstreamer}])
-#disabled vlc EMOTION_CHECK_MODULE([VLC], [${want_vlc}])
-EMOTION_CHECK_MODULE([generic], [${want_generic}])
-
-#disabled vlc
-#if test "x${enable_xine}" = "xno" && test "x${enable_gstreamer}" = "xno" && test "x${enable_vlc}" = "xno" ; then
-if test "x${enable_xine}" = "xno" && test "x${enable_gstreamer}" = "xno"; then
-#disabled vlc
-#   AC_MSG_ERROR([Xine, Gstreamer or VLC backends must be selected to build Emotion])
-   AC_MSG_ERROR([Xine or Gstreamer backends must be selected to build Emotion])
+EMOTION_CHECK_MODULE([Generic], [${want_generic}])
+
+EMOTION_CHECK_GENERIC_PLAYER([VLC], [${want_generic_vlc}])
+
+if test "x${enable_xine}" = "xno" && test "x${enable_gstreamer}" = "xno" && test "x${enable_generic}" = "xno" ; then
+   AC_MSG_ERROR([Xine, Gstreamer or Generic backends must be selected to build Emotion])
 fi
 
+
 PKG_CHECK_MODULES([EIO],
        [eio],
        [
@@ -259,9 +258,6 @@ EFL_CHECK_INSTALL_EXAMPLES([enable_install_examples="yes"], [enable_install_exam
 
 AC_SUBST(requirement_emotion)
 
-#disabled vlc
-#src/modules/vlc/Makefile
-
 AC_OUTPUT([
 Makefile
 emotion.pc
@@ -297,8 +293,15 @@ echo "Configuration Options Summary:"
 echo
 echo "  Modules:"
 echo "    Xine...............: ${enable_xine}"
-#echo "    Vlc................: ${enable_vlc}"
 echo "    Gstreamer..........: ${enable_gstreamer}"
+echo "    Generic............: ${enable_generic}"
+
+if test "x${enable_generic}" = "xyes"; then
+echo
+echo "  Generic Players:"
+echo "    VLC................: ${enable_generic_vlc}"
+fi
+
 echo
 echo "  Build emotion_test...: $have_emotion_test"
 echo "  edje_cc..............: ${edje_cc}"
index 0281f1d..4509c25 100644 (file)
@@ -48,15 +48,15 @@ AS_IF([test "x$have_dep" = "xyes"], [$2], [$3])
 
 ])
 
-dnl use: EMOTION_CHECK_DEP_VLC(want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl use: EMOTION_CHECK_DEP_GENERIC_VLC(want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 
-AC_DEFUN([EMOTION_CHECK_DEP_VLC],
+AC_DEFUN([EMOTION_CHECK_DEP_GENERIC_VLC],
 [
 
 requirement=""
 
-PKG_CHECK_MODULES([VLC],
-   [libvlc >= 0.9 evas >= 0.9.9],
+PKG_CHECK_MODULES([GENERIC_VLC],
+   [libvlc >= 0.9],
    [
     have_dep="yes"
     requirement="libvlc"
@@ -152,3 +152,58 @@ AS_IF([test "x$have_module" = "xyes"], [$3], [$4])
 m4_popdef([UP])
 m4_popdef([DOWN])
 ])
+
+dnl use: EMOTION_CHECK_GENERIC_PLAYER(description, want_module[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+AC_DEFUN([EMOTION_CHECK_GENERIC_PLAYER],
+[
+m4_pushdef([UP], m4_translit([$1], [-a-z], [_A-Z]))dnl
+m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
+
+want_module="$2"
+
+AC_ARG_ENABLE(generic-[]DOWN,
+   [AC_HELP_STRING([--enable-generic-]DOWN, [enable build of Generic Player $1 @<:@default=yes@:>@])],
+   [
+    if test "x${enableval}" = "xyes" ; then
+       enable_module="yes"
+    else
+       enable_module="no"
+    fi
+   ],
+   [enable_module="auto"])
+
+if test "x${enable_generic}" != "xyes"; then
+   if test "x${enable_module}" = "xyes"; then
+      AC_MSG_WARN([Generic module is disabled, force disable of Generic Player $1])
+   fi
+   enable_module="no"
+   want_module="no"
+fi
+
+if test "x${enable_module}" = "xauto"; then
+   enable_module="${want_module}"
+elif test "x${enable_module}" = "xyes"; then
+   want_module="yes"
+fi
+
+have_module="no"
+if test "x${want_module}" = "xyes" && test "x${enable_module}" = "xyes"; then
+   m4_default([EMOTION_CHECK_DEP_GENERIC_]m4_defn([UP]))(${enable_module}, [have_module="yes"], [have_module="no"])
+fi
+
+AC_MSG_CHECKING([Whether to enable Generic Player $1])
+AC_MSG_RESULT([${have_module}])
+
+AM_CONDITIONAL(EMOTION_BUILD_GENERIC_[]UP, [test "x${have_module}" = "xyes"])
+
+enable_generic_[]DOWN="no"
+if test "x${have_module}" = "xyes" ; then
+   enable_generic_[]DOWN=${enable_module}
+   AC_DEFINE(EMOTION_BUILD_GENERIC_[]UP, 1, [Set to 1 if $1 is built])
+fi
+
+AS_IF([test "x$have_module" = "xyes"], [$3], [$4])
+
+m4_popdef([UP])
+m4_popdef([DOWN])
+])
index c95b60d..d7fc012 100644 (file)
@@ -57,8 +57,8 @@ static const char *_external_emotion_engines[] = {
 #ifdef EMOTION_BUILD_GSTREAMER
   "gstreamer",
 #endif
-#ifdef EMOTION_BUILD_VLC
-  "vlc",
+#ifdef EMOTION_BUILD_GENERIC
+  "generic",
 #endif
   NULL,
 };
@@ -68,8 +68,8 @@ static const char _external_emotion_engine_def[] =
   "xine";
 #elif defined(EMOTION_BUILD_GSTREAMER)
   "gstreamer";
-#elif defined(EMOTION_BUILD_VLC)
-  "vlc";
+#elif defined(EMOTION_BUILD_GENERIC)
+  "generic";
 #else
   "impossible";
 #endif
index 7d1f5d8..bbdd8c3 100644 (file)
@@ -3,6 +3,6 @@ MAINTAINERCLEANFILES = Makefile.in
 
 SUBDIRS =
 
-#if EMOTION_BUILD_VLC
-#SUBDIRS += vlc
-#endif
+if EMOTION_BUILD_GENERIC_VLC
+SUBDIRS += vlc
+endif
index c32906e..6d6a9f2 100644 (file)
@@ -8,11 +8,11 @@ AM_CPPFLAGS = \
 -DPACKAGE_BIN_DIR=\"$(bindir)\" \
 -DPACKAGE_LIB_DIR=\"$(libdir)\" \
 -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
-@VLC_CFLAGS@
+@GENERIC_VLC_CFLAGS@
 
 internal_bindir = $(libdir)/emotion/utils
 internal_bin_PROGRAMS = em_generic_vlc
 
 em_generic_vlc_SOURCES = emotion_generic_vlc.c
 em_generic_vlc_DEPENDENCIES = $(top_srcdir)/src/modules/generic/Emotion_Generic_Plugin.h
-em_generic_vlc_LDADD = @VLC_LIBS@
+em_generic_vlc_LDADD = @GENERIC_VLC_LIBS@
index e0136c0..be68d0f 100644 (file)
@@ -1505,9 +1505,6 @@ _pixels_get(void *data, Evas_Object *obj)
 #ifdef EMOTION_STATIC_BUILD_XINE
 Eina_Bool xine_module_init(void);
 #endif
-#ifdef EMOTION_STATIC_BUILD_VLC
-Eina_Bool vlc_module_init(void);
-#endif
 #ifdef EMOTION_STATIC_BUILD_GSTREAMER
 Eina_Bool gstreamer_module_init(void);
 #endif
@@ -1557,9 +1554,6 @@ _smart_init(void)
 #ifdef EMOTION_STATIC_BUILD_XINE
        xine_module_init();
 #endif
-#ifdef EMOTION_STATIC_BUILD_VLC
-       vlc_module_init();
-#endif
 #ifdef EMOTION_STATIC_BUILD_GSTREAMER
        gstreamer_module_init();
 #endif
index 0243f95..aac4696 100644 (file)
@@ -30,7 +30,7 @@ struct _default_players {
 };
 
 static struct _default_players players[] = {
-#ifdef EMOTION_BUILD_VLC
+#ifdef EMOTION_BUILD_GENERIC_VLC
        { "vlc", "em_generic_vlc" },
 #endif
        { NULL, NULL }
diff --git a/src/modules/vlc/Makefile.am b/src/modules/vlc/Makefile.am
deleted file mode 100644 (file)
index 5d9c056..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-MAINTAINERCLEANFILES = Makefile.in
-
-AM_CPPFLAGS = \
--I$(top_srcdir) \
--I$(top_srcdir)/src/lib \
--I$(top_srcdir)/src/modules \
--DPACKAGE_BIN_DIR=\"$(bindir)\" \
--DPACKAGE_LIB_DIR=\"$(libdir)\" \
--DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
-@EMOTION_CFLAGS@ \
-@EMOTION_CPPFLAGS@ \
-@VLC_CFLAGS@
-
-if EMOTION_BUILD_VLC
-if !EMOTION_STATIC_BUILD_VLC
-
-pkgdir = $(libdir)/emotion
-
-pkg_LTLIBRARIES = vlc.la
-
-vlc_la_SOURCES = \
-emotion_vlc.c \
-emotion_vlc.h
-vlc_la_LIBADD = @VLC_LIBS@ $(top_builddir)/src/lib/libemotion.la -lpthread
-vlc_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
-vlc_la_LIBTOOLFLAGS = --tag=disable-static
-
-endif
-endif
diff --git a/src/modules/vlc/TODO b/src/modules/vlc/TODO
deleted file mode 100644 (file)
index 64e724a..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-#
-# TODO for emotion/vlc plugin
-#
-
-# Known bug
-When changing video size at beginning, there is sometimes SEGV in evas.
-The plugin first load the movie with default geometry, wait for it inputThread from VLC to be launched
-and read the movie geometry. Then it stops vlc and start it again with known geometry and realloc frames.
-Plugin warn emotion that size changed using API func "_emotion_frame_resize" thru fd_write/fd_read socket.
-
-It seems that it tries to convert original picture from YUV to BGRA but it's already in RGBA format. 
-p im->cache_entry = {_list_data = {next = 0x818f860, prev = 0x0, last = 0x818f860}, cache = 0x80627f0, cache_key = 0x0, file = 0x0, key = 0x0, 
-       timestamp = 0, laststat = 1221825297, references = 1, scale = 1 '\001', load_opts = {scale_down_by = 0, dpi = 0, w = 0, h = 0}, 
-       space = 1, w = 384, h = 288, allocated = {w = 384, h = 288}, info = {module = 0x0, loader = 0x0}, flags = {loaded = 0 '\0', 
-       dirty = 1 '\001', activ = 0 '\0', need_data = 1 '\001', lru_nodata = 0 '\0', cached = 1 '\001', alpha = 0 '\0', alpha_sparse = 0 '\0'}}
-We can see cache is 1 (=EVAS_COLORSPACE_YCBCR422P601_PL) instead of 0 (=EVAS_COLORSPACE_ARGB8888).
-
-GDB TRACE =
-evas_common_convert_yuv_420p_601_rgba (src=0xb40a6008, dst=0xb3e72008 "", w=720, h=400) at evas_convert_yuv.c:198
-198                 movd_m2r(*up, mm3);
-(gdb) bt
-0  evas_common_convert_yuv_420p_601_rgba (src=0xb40a6008, dst=0xb3e72008 "", w=720, h=400) at evas_convert_yuv.c:198
-1  0xb7f3e087 in evas_common_image_colorspace_normalize (im=0x8090a88) at evas_image_main.c:388
-2  0xb7e6486d in eng_image_draw (data=0x8063388, context=0x8061120, surface=0x8090808, image=0x8090a88, src_x=0, src_y=0, src_w=720, src_h=400, dst_x=0, dst_y=0, dst_w=800, dst_h=600, smooth=1) at evas_engine.c:566
-3  0xb7ee027b in evas_object_image_render (obj=0x8061788, output=0x8063388, context=0x8061120, surface=0x8090808, x=0, y=0) at evas_object_image.c:1974
-4  0xb7f09db1 in evas_render_updates_internal (e=0x8063c80, make_updates=1 '\001', do_draw=1 '\001') at evas_render.c:526
-5  0xb7e7f3d6 in _ecore_evas_x_render (ee=0x8063a98) at ecore_evas_x.c:330
-6  0xb7e82207 in _ecore_evas_x_idle_enter (data=0x0) at ecore_evas_x.c:1320
-7  0xb7ea738b in _ecore_idle_enterer_call () at ecore_idle_enterer.c:101
-8  0xb7eaaae5 in _ecore_main_loop_iterate_internal (once_only=0) at ecore_main.c:691
-9  0xb7eaaccf in ecore_main_loop_begin () at ecore_main.c:87
-10 0x08048bb2 in main ()
-
-# Missing functions (empty bodies) int emotion_vlc.c
-/* STUB */
-static void em_event_feed(void *ef, int event)
---
-/* STUB */
-static void em_event_mouse_button_feed(void *ef, int button, int x, int y)
---
-/* STUB */
-static void em_event_mouse_move_feed(void *ef, int x, int y)
---
-/* STUB */
-static void em_video_channel_set(void *ef, int channel)
---
-/* STUB */
-static int em_video_channel_get(void *ef)
---
-/* STUB */
-static const char * em_video_channel_name_get(void *ef, int channel)
---
-/* STUB */
-static int em_audio_channel_count(void *ef)
---
-/* STUB */
-static const char * em_audio_channel_name_get(void *ef, int channel)
---
-/* STUB */
-static int em_spu_channel_count(void *ef)
---
-/* STUB */
-static const char * em_spu_channel_name_get(void *ef, int channel)
---
-/* STUB */
-static void em_spu_channel_mute_set(void *ef, int mute)
---
-/* STUB */
-static int em_spu_channel_mute_get(void *ef)
---
-/* STUB */
-static const char * em_chapter_name_get(void *ef, int chapter)
diff --git a/src/modules/vlc/emotion_vlc.c b/src/modules/vlc/emotion_vlc.c
deleted file mode 100644 (file)
index c59cfc9..0000000
+++ /dev/null
@@ -1,1238 +0,0 @@
-/* 
- * SICMA AERO SEAT
- * code@ife-sit.info
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-#include <sys/types.h>
-#include <unistd.h>
-#include <Evas.h>
-#ifdef HAVE_EVAS_SOFWARE_X11
-# include <Evas_Engine_Software_X11.h>
-#endif
-#ifdef HAVE_EVAS_OPENGL_X11
-# include <Evas_Engine_GL_X11.h>
-#endif
-
-#include "Emotion.h"
-#include "emotion_private.h"
-#include "emotion_vlc.h"
-
-/* internal util calls */
-static void *_em_lock          (void *par);
-static void  _em_unlock        (void *par);
-static void  _em_event         (const libvlc_event_t *event, void* data);
-static void  _em_resize        (Emotion_Vlc_Video *ev, int x,  int y);
-static Eina_Bool _em_fd_active (Emotion_Vlc_Video *ev, Ecore_Fd_Handler *fdh);
-static int   _em_reload_vlc    (Emotion_Vlc_Video *ev);
-void*       _em_slave_thread  (void * t);
-
-void * _em_slave_thread(void * t)
-{
-       int event;
-       pthread_detach(pthread_self());
-       Emotion_Vlc_Video *ev=  (Emotion_Vlc_Video*)t;
-       while(read(ev->fd_slave_read, &event,  sizeof(int)) > 0)        {
-               switch(event)   {
-                       case VLC_RESIZE:
-                               _em_resize(ev, -1, -1);
-                       break;
-                       case VLC_CHANGE_VOL:
-                               _emotion_audio_level_change(ev->obj);
-                       break;
-                       default:
-                       break;
-               }
-       }
-       fprintf(stderr,"BYE BYE");
-       return NULL;
-}
-
-static unsigned char em_init(Evas_Object *obj, void **emotion_video, Emotion_Module_Options *opt)
-{
-       Emotion_Vlc_Video *ev;
-       Emotion_Vlc_Video_Frame *ef;
-       int fds[2], x, y;
-       int event = VLC_NEW_FRAME;
-       pthread_t t_id;
-       x = WIDTH;
-       y = HEIGHT;
-
-
-       if (!emotion_video) return 0;
-
-       ev = (Emotion_Vlc_Video*)calloc(1, sizeof(Emotion_Vlc_Video));
-       ASSERT_EV(ev) return 0;
-       memset(ev, 0, sizeof(Emotion_Vlc_Video));
-
-       ef = (Emotion_Vlc_Video_Frame*)calloc(1, sizeof(Emotion_Vlc_Video_Frame));
-       if (!ef) return 0;
-       memset(ef, 0, sizeof(Emotion_Vlc_Video_Frame));
-
-       /* init internal frames */
-       if(ef->frame_A) {
-               free(ef->frame_A);
-       }
-       if(ef->frame_B) {
-               free(ef->frame_B);
-       }
-       ef->frame_A = (char*)malloc(x*y*sizeof(char)*4);
-       ef->frame_B = (char*)malloc(x*y*sizeof(char)*4);
-       memset(ef->frame_A, 0x00, x*y*sizeof(char)*4);
-       memset(ef->frame_B, 0x00, x*y*sizeof(char)*4);
-       ef->frame = ef->frame_A;
-
-       /* update size in object */
-       ev->w = x;
-       ev->h = y;
-       ev->ratio = (double)x/(double)y;
-
-       ev->cur_frame = ef;
-
-       if(pipe(fds) == 0)
-       {
-               ev->fd_read = fds[0];
-               ev->fd_write = fds[1];
-               fcntl(ev->fd_read, F_SETFL, O_NONBLOCK);
-               ev->fd_handler = ecore_main_fd_handler_add(ev->fd_read, ECORE_FD_READ, (Ecore_Fd_Cb)_em_fd_active, ev, NULL, NULL);
-               ecore_main_fd_handler_active_set(ev->fd_handler, ECORE_FD_READ);
-       }
-
-       if (pipe(fds) == 0)
-       {
-               ev->fd_slave_read = fds[0];
-               ev->fd_slave_write = fds[1];
-               fcntl(ev->fd_slave_write, F_SETFL, O_NONBLOCK);
-       }
-       ev->obj = obj;
-
-       ev->delete_me = 0;
-       ev->opening = 1;
-       ev->play_ok = 0;
-       ev->video_mute = 1;
-
-       if (opt)
-       {
-               ev->opt_no_audio = opt->no_audio;
-               ev->opt_no_video = opt->no_video;
-       }
-
-
-       /* init libvlc */
-       int vlc_argc = 0;
-       char const *vlc_argv[] =
-       {
-               "-q",
-               //"-vvvvv",
-               "--ignore-config"
-       };
-       vlc_argc = sizeof(vlc_argv) / sizeof(*vlc_argv);
-       sprintf(ev->clock, "%lld", (long long int)(intptr_t)_em_lock);
-       sprintf(ev->cunlock, "%lld", (long long int)(intptr_t)_em_unlock);
-       sprintf(ev->cdata, "%lld", (long long int)(intptr_t)ev);
-       sprintf(ev->width, "%d", WIDTH);
-       sprintf(ev->height, "%d", HEIGHT);
-       sprintf(ev->pitch, "%d", 4*WIDTH);
-
-       ev->vlc_player = libvlc_new(vlc_argc, vlc_argv);
-
-       if(ev->vlc_player)      {
-               ev->play_ok = 1;
-       }
-
-       pthread_mutex_init(&ef->frame_copy_lock, NULL);
-       pthread_create(&t_id, NULL, _em_slave_thread, ev);
-
-       ev->opening = 0;
-       write(ev->fd_write, &event, sizeof(void *));
-
-       *emotion_video = ev;
-       return 1;
-}
-
-static int em_shutdown(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-       Emotion_Vlc_Video_Frame *evvf;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       evvf = ev->cur_frame;
-
-       ASSERT_EV_VLC(ev) return 0;
-       libvlc_release(ev->vlc_player);
-       ev->vlc_player = NULL;
-
-       ev->closing = 0;
-
-       ecore_main_fd_handler_del(ev->fd_handler);
-
-       if(evvf)        {
-               if(evvf->frame_A)       {
-                       free(evvf->frame_A);
-               }
-               if(evvf->frame_B)       {
-                       free(evvf->frame_B);
-               }
-               pthread_mutex_destroy(&(evvf->frame_copy_lock));
-               free(evvf);
-       }
-       close(ev->fd_write);
-       close(ev->fd_read);
-       close(ev->fd_slave_write);
-       close(ev->fd_slave_read);
-
-       return 1;
-}
-
-static unsigned char em_file_open(const char *file, Evas_Object *obj, void *ef)
-{
-       Emotion_Vlc_Video *ev;
-       int i, method;
- Evas *e;
- Eina_List *methods, *l;
- char *name;
-#ifndef _WIN32
- uint32_t xid;
-#endif
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return 0;
-       ASSERT_EV_VLC(ev) return 0;
-
-       ev->vlc_m = libvlc_media_new_path(ev->vlc_player, file);
-       ASSERT_EV_M(ev) return 0;
-       ev->vlc_mp = libvlc_media_player_new_from_media(ev->vlc_m);
-       libvlc_media_release(ev->vlc_m); 
-       ev->vlc_m = NULL;
-       ASSERT_EV_MP(ev) return 0;
-
-   e = evas_object_evas_get(obj);
-   method = evas_output_method_get(e);
-   methods = evas_render_method_list();
-   EINA_LIST_FOREACH(methods, l, name)
-     if (evas_render_method_lookup(name) == method) break;
-
-#ifdef _WIN32 /* NOT IMPLEMENTED YET */
-  libvlc_media_player_set_hwnd(ev->vlc_mp, (void*)xid);
-#else
-#ifdef HAVE_EVAS_SOFWARE_X11
-   if (!strcmp(name, "software_x11"))
-     {
-        Evas_Engine_Info_Software_X11 *einfo;
-        einfo = (Evas_Engine_Info_Software_X11*)evas_engine_info_get(e);
-        xid = einfo->info.drawable;
-     }
-#endif
-#ifdef HAVE_EVAS_OPENGL_X11
-   if (!strcmp(name, "gl_x11"))
-     {
-        Evas_Engine_Info_GL_X11 *einfo;
-        einfo = (Evas_Engine_Info_GL_X11*)evas_engine_info_get(e);
-        xid = einfo->info.drawable;
-     }
-#endif
-   if (strcmp(name, "software_x11") && strcmp(name, "gl_x11")) /* FIXME */
-     {
-        fprintf(stderr, "FATAL: engine unsupported!\n");
-        exit(1);
-     }
-  libvlc_media_player_set_xwindow(ev->vlc_mp, xid);
-#endif
-
-       ev->vlc_evtmngr = libvlc_media_player_event_manager (ev->vlc_mp);
-
-       for(i = EVENT_BEG_ID; i<EVENT_BEG_ID+NB_EVENTS; i++)    {
-               libvlc_event_attach(ev->vlc_evtmngr, (libvlc_event_type_t)i, _em_event, ev);
-       }
-
-       if(ev->filename)        {
-               free(ev->filename);
-               ev->filename = NULL;
-       }
-       ev->filename = strdup(file);
-
-       /* set properties to video object */
-       ev->just_loaded = 1;
-   evas_render_method_list_free(methods);
-       return 1;
-}
-
-static void em_file_close(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-       int i;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_MP(ev) return;
-
-       for(i = EVENT_BEG_ID; i<EVENT_BEG_ID+NB_EVENTS; i++)    {
-               libvlc_event_detach(ev->vlc_evtmngr, (libvlc_event_type_t)i, _em_event, ev);
-       }
-       libvlc_media_player_stop(ev->vlc_mp);
-       libvlc_media_player_release(ev->vlc_mp);
-       ev->vlc_mp = NULL;
-       if(ev->filename)        {
-               free(ev->filename);
-               ev->filename = NULL;
-       }
-}
-
-static void em_play(void *ef, double pos)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_MP(ev) return;
-
-       ev->play = 1;
-       ev->play_ok = 0;
-
-       if(pos != ev->pos)      {
-               libvlc_media_player_set_time(ev->vlc_mp, (libvlc_time_t)(pos*1000));
-       }
-       
-       libvlc_media_player_play(ev->vlc_mp);
-
-       ev->just_loaded = 0;
-}
-
-static void em_stop(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_MP(ev) return;
-
-       ev->play = 0;
-       ev->play_ok = 0;
-       libvlc_media_player_pause(ev->vlc_mp);
-}
-
-static void em_size_get(void *ef, int *w, int *h)
-{
-       Emotion_Vlc_Video *ev;
-       Emotion_Vlc_Video_Frame *fr;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       fr = ev->cur_frame;
-
-       pthread_mutex_lock(&fr->frame_copy_lock);
-       if(w) *w = ev->w;
-       if(h) *h = ev->h;
-       pthread_mutex_unlock(&fr->frame_copy_lock);
-}
-
-static void em_pos_set(void *ef, double pos)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_MP(ev) return;
-       libvlc_media_player_set_time(ev->vlc_mp, (libvlc_time_t)(pos*1000));
-}
-
-static double em_len_get(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-       ASSERT_EV(ev) return 0;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       return ev->len;
-}
-
-static int em_fps_num_get(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-
-       ASSERT_EV(ev) return 0;
-       ev = (Emotion_Vlc_Video *)ef;
-       return (int)(ev->fps * 1000.0);
-}
-
-static int em_fps_den_get(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-
-       return 1000;
-}
-
-static double em_fps_get(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-
-       ASSERT_EV(ev) return 0;
-       ev = (Emotion_Vlc_Video *)ef;
-       return ev->fps;
-}
-
-static double em_pos_get(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-
-       ASSERT_EV(ev) return 0;
-       ev = (Emotion_Vlc_Video *)ef;
-       return ev->pos;
-}
-
-static void em_vis_set(void *ef, Emotion_Vis vis)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       if (ev->vis == vis) return;
-       ev->vis = vis;
-}
-
-static Emotion_Vis em_vis_get(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       return ev->vis;
-}
-
-static Eina_Bool em_vis_supported(void *ef, Emotion_Vis vis)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       return EINA_FALSE;
-}
-
-static double em_ratio_get(void *ef)
-{
-       double ratio;
-       Emotion_Vlc_Video *ev;
-       Emotion_Vlc_Video_Frame *fr;
-
-       ASSERT_EV(ev) return 0;
-       ev = (Emotion_Vlc_Video *)ef;
-       fr = ev->cur_frame;
-       pthread_mutex_lock(&fr->frame_copy_lock);
-       ratio = ev->ratio;
-       pthread_mutex_unlock(&fr->frame_copy_lock);
-       return ratio;
-}
-
-static int em_video_handled(void *ef)
-{
-       int ret = 0;
-       Emotion_Vlc_Video *ev;
-
-       ASSERT_EV(ev) return 0;
-       ASSERT_EV_MP(ev) return 0;
-       ev = (Emotion_Vlc_Video *)ef;
-       if (ev->opening || (!ev->play_ok)) return 0;
-
-       ret = libvlc_media_player_has_vout(ev->vlc_mp);
-       return ret;
-}
-
-static int em_audio_handled(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return 0;
-       if (ev->opening || (!ev->play_ok)) return 0;
-       return 1;
-}
-
-static int em_seekable(void *ef)
-{
-       int ret = 0;
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return 0;
-       ASSERT_EV_MP(ev) return 0;
-       if (ev->opening || (!ev->play_ok)) return 0;
-       ret = libvlc_media_player_is_seekable(ev->vlc_mp);
-       return ret;
-}
-
-static void em_frame_done(void *ef)
-{
-       return;
-}
-
-static Emotion_Format em_format_get(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-
-       return EMOTION_FORMAT_BGRA;
-}
-
-static void em_video_data_size_get(void *ef, int *w, int *h)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       if (w) *w = ev->w;
-       if (h) *h = ev->h;
-}
-
-static int em_yuv_rows_get(void *ef, int w, int h, unsigned char **yrows, unsigned char **urows, unsigned char **vrows)
-{
-   Emotion_Vlc_Video *ev;
-   volatile Emotion_Vlc_Video_Frame *fr;
-   
-   ev = (Emotion_Vlc_Video *)ef;
-   fr = ev->cur_frame;
-   if (!fr) return 0;
-   if (fr->frame_A)
-     {
-       int i;
-       
-       // FIXME: this is wrong. see xine/gst modules
-       for (i = 0; i < h; i++) yrows[i] = fr->frame_A + (i * w);
-       for (i = 0; i < (h / 2); i++) urows[i] = fr->frame_A + (i * w);
-       for (i = 0; i < (h / 2); i++) vrows[i] = fr->frame_A + (i * w);
-       return 1;
-     }
-   return 0;
-}
-
-static int em_bgra_data_get(void *ef, unsigned char **bgra_data)
-{
-       Emotion_Vlc_Video *ev;
-       Emotion_Vlc_Video_Frame *fr;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return 0;
-       fr = ev->cur_frame;
-       if (!fr) return 0;
-       if (fr->frame)
-       {
-               /* wait for frame to be ready */
-               pthread_mutex_lock(&fr->frame_copy_lock);
-               /* send cur frame to emotion */
-               *bgra_data = fr->frame;
-
-               /* switch frames */
-               if(fr->frame == fr->frame_A)    {
-                       fr->frame = fr->frame_B;
-               } else {
-                       fr->frame = fr->frame_A;
-               }
-
-               /* unlock both frames */
-               pthread_mutex_unlock(&fr->frame_copy_lock);
-               return 1;
-       }
-       return 0;
-}
-
-static void _em_resize(Emotion_Vlc_Video *ev, int x,  int y)
-{
-       int i;
-       int event;
-       int vlc_argc = 0;
-       unsigned int tmp;
-       char const *vlc_argv[] =
-       {
-               "-q",
-               //"-vvvvv",
-               "--ignore-config",
-               "--vout", "vmem",
-               "--vmem-width", ev->width,
-               "--vmem-height", ev->height,
-               "--vmem-pitch", ev->pitch,
-               "--vmem-chroma", "RV32",
-               "--vmem-lock", ev->clock,
-               "--vmem-unlock", ev->cunlock,
-               "--vmem-data", ev->cdata,
-       };
-       Emotion_Vlc_Video_Frame *fr;
-
-       ASSERT_EV(ev)   return;
-       ASSERT_EV_VLC(ev) return;
-       fr = ev->cur_frame;
-
-       /* We look for new size if not specified */
-       if ((x == -1) || (y == -1))
-         if (!libvlc_video_get_size(ev->vlc_mp, tmp, &x, &y)) return;
-
-       /* stop vlc if necessary */
-       if(ev->filename)        {       
-               libvlc_media_player_stop(ev->vlc_mp);
-               libvlc_media_player_release(ev->vlc_mp);
-       }
-
-       /* update size in object */
-       ev->w = x;
-       ev->h = y;
-       ev->ratio = (double)x/(double)y;
-
-       /* we need to restart vlc */
-       libvlc_release(ev->vlc_player);
-       vlc_argc = sizeof(vlc_argv) / sizeof(*vlc_argv);
-       sprintf(ev->clock, "%lld", (long long int)(intptr_t)_em_lock);
-       sprintf(ev->cunlock, "%lld", (long long int)(intptr_t)_em_unlock);
-       sprintf(ev->cdata, "%lld", (long long int)(intptr_t)ev);
-       sprintf(ev->width, "%d", ev->w);
-       sprintf(ev->height, "%d", ev->h);
-       sprintf(ev->pitch, "%d", 4*ev->w);
-       ev->vlc_player = libvlc_new(vlc_argc, vlc_argv);
-
-       pthread_mutex_lock(&fr->frame_copy_lock);
-
-       if(ev->filename)        {       
-               /* relaunch media and mediaplayer */
-               ev->vlc_m = libvlc_media_new_path(ev->vlc_player, ev->filename);
-               ASSERT_EV_M(ev) return;
-               ev->vlc_mp = libvlc_media_player_new_from_media(ev->vlc_m);
-               libvlc_media_release(ev->vlc_m); 
-               ev->vlc_m = NULL;
-               ASSERT_EV_MP(ev) return;
-
-               ev->vlc_evtmngr = libvlc_media_player_event_manager (ev->vlc_mp);
-
-               for(i = EVENT_BEG_ID; i<EVENT_BEG_ID+NB_EVENTS; i++)    {
-                       libvlc_event_attach(ev->vlc_evtmngr, (libvlc_event_type_t)i, _em_event, ev);
-               }
-       }
-
-       /* resize frames */
-       if(fr->frame_A) {
-               free(fr->frame_A);
-       }
-       if(fr->frame_B) {
-               free(fr->frame_B);
-       }
-       fr->frame_A = malloc(ev->w*ev->h*sizeof(char)*4);
-       fr->frame_B = malloc(ev->w*ev->h*sizeof(char)*4);
-       memset(fr->frame_A, 0xFF, x*y*sizeof(char)*4);
-       memset(fr->frame_B, 0xFF, x*y*sizeof(char)*4);
-       fr->frame = fr->frame_A;
-
-       /* notify a new frame is available */
-       event = VLC_RESIZE;
-       write(ev->fd_write, &event, sizeof(void *));
-
-       pthread_mutex_unlock(&fr->frame_copy_lock);
-
-       /* unlock both frames */
-       if(ev->filename)        {       
-               libvlc_media_player_play(ev->vlc_mp);
-       }
-
-       /* activate display */
-       ev->video_mute = 0;
-}
-
-static Eina_Bool _em_fd_active(Emotion_Vlc_Video *ev, Ecore_Fd_Handler *fdh)
-{
-       /* this only used for ecore notification */
-       /* every other internal event should be done in _em_slave_thread */
-       int event;
-       int fd, len;
-       Emotion_Vlc_Video_Frame *fr;
-
-       fd = ecore_main_fd_handler_fd_get(fdh);
-       while((len = read(fd, &event, sizeof(int))) > 0) {
-               if(len == sizeof(int)) {
-                       switch(event)   {
-                               case VLC_NEW_FRAME:
-                                       ASSERT_EV(ev)   return EINA_TRUE;
-                                       _emotion_frame_new(ev->obj);
-                               break;
-                               case VLC_RESIZE:
-                                       ASSERT_EV(ev)   return EINA_TRUE;
-                                       _emotion_frame_resize(ev->obj, ev->w, ev->h, ev->ratio);
-                               break;
-                               default:
-                               break;
-                       }
-               }
-       }
-       return EINA_TRUE;
-}
-
-
-/* STUB */
-static void em_event_feed(void *ef, int event)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       if ((ev->opening) || (!ev->play_ok)) return;
-
-       switch (event)
-       {
-               case EMOTION_EVENT_MENU1:
-                       break;
-               case EMOTION_EVENT_MENU2:
-                       break;
-               case EMOTION_EVENT_MENU3:
-                       break;
-               case EMOTION_EVENT_MENU4:
-                       break;
-               case EMOTION_EVENT_MENU5:
-                       break;
-               case EMOTION_EVENT_MENU6:
-                       break;
-               case EMOTION_EVENT_MENU7:
-                       break;
-               case EMOTION_EVENT_UP:
-                       break;
-               case EMOTION_EVENT_DOWN:
-                       break;
-               case EMOTION_EVENT_LEFT:
-                       break;
-               case EMOTION_EVENT_RIGHT:
-                       break;
-               case EMOTION_EVENT_SELECT:
-                       break;
-               case EMOTION_EVENT_NEXT:
-                       break;
-               case EMOTION_EVENT_PREV:
-                       break;
-               case EMOTION_EVENT_ANGLE_NEXT:
-                       break;
-               case EMOTION_EVENT_ANGLE_PREV:
-                       break;
-               case EMOTION_EVENT_FORCE:
-                       break;
-               case EMOTION_EVENT_0:
-                       break;
-               case EMOTION_EVENT_1:
-                       break;
-               case EMOTION_EVENT_2:
-                       break;
-               case EMOTION_EVENT_3:
-                       break;
-               case EMOTION_EVENT_4:
-                       break;
-               case EMOTION_EVENT_5:
-                       break;
-               case EMOTION_EVENT_6:
-                       break;
-               case EMOTION_EVENT_7:
-                       break;
-               case EMOTION_EVENT_8:
-                       break;
-               case EMOTION_EVENT_9:
-                       break;
-               case EMOTION_EVENT_10:
-                       break;
-               default:
-                       return;
-                       break;
-       }
-}
-
-/* STUB */
-static void em_event_mouse_button_feed(void *ef, int button, int x, int y)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       if ((ev->opening) || (!ev->play_ok)) return;
-}
-
-/* STUB */
-static void em_event_mouse_move_feed(void *ef, int x, int y)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       if ((ev->opening) || (!ev->play_ok)) return;
-}
-
-static int em_video_channel_count(void *ef)
-{
-       int ret  = 0;
-       Emotion_Vlc_Video *ev;
-       ev = (Emotion_Vlc_Video *)ef; 
-       ASSERT_EV(ev) return 0;
-       ASSERT_EV_MP(ev) return 0;
-       if (ev->opening || (!ev->play_ok)) return 0;
-       ret = libvlc_media_player_has_vout(ev->vlc_mp);
-       return ret;
-}
-
-/* STUB */
-static void em_video_channel_set(void *ef, int channel)
-{
-       return;
-}
-
-/* STUB */
-static int em_video_channel_get(void *ef)
-{
-       return 1;
-}
-
-/* STUB */
-static const char * em_video_channel_name_get(void *ef, int channel)
-{
-       Emotion_Vlc_Video *ev;
-       return NULL;
-}
-
-static void em_video_channel_mute_set(void *ef, int mute)
-{
-       Emotion_Vlc_Video *ev;
-       ev = (Emotion_Vlc_Video*)ef;
-       ASSERT_EV(ev)   return;
-       ev->video_mute = mute;
-}
-
-static int em_video_channel_mute_get(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-       ev = (Emotion_Vlc_Video*)ef;
-       ASSERT_EV(ev)   return;
-       return ev->video_mute;
-}
-
-/* STUB */
-static int em_audio_channel_count(void *ef)
-{
-       return -1;
-}
-
-static void em_audio_channel_set(void *ef, int channel)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_VLC(ev) return;
-       if (channel < -1) channel = -1;
-       ev->audio_channel = channel;
-       libvlc_audio_set_channel(ev->vlc_mp, channel);
-}
-
-static int em_audio_channel_get(void *ef)
-{
-       int ret = 0;
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return 0;
-       ASSERT_EV_VLC(ev) return 0;
-       if (ev->opening || (!ev->play_ok)) return 0;
-       ret = libvlc_audio_get_channel(ev->vlc_mp);
-       return ret;
-}
-
-/* STUB */
-static const char * em_audio_channel_name_get(void *ef, int channel)
-{
-       return NULL;
-}
-
-static void em_audio_channel_mute_set(void *ef, int mute)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_VLC(ev) return;
-       ev->audio_mute = mute;
-       libvlc_audio_set_mute(ev->vlc_mp, (int)(ev->audio_mute));
-}
-
-static int em_audio_channel_mute_get(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return 0;
-       return ev->audio_mute;
-}
-
-static void em_audio_channel_volume_set(void *ef, double vol)
-{
-       int event = VLC_CHANGE_VOL;
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_VLC(ev) return;
-
-       if (vol < 0.0) vol = 0.0;
-       if (vol > 1.0) vol = 1.0;
-       libvlc_audio_set_volume(ev->vlc_mp, (int)(vol * 200));
-       write(ev->fd_slave_write, &event, sizeof(void *));
-}
-
-static double em_audio_channel_volume_get(void *ef)
-{
-       int vol;
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_VLC(ev) return;
-       if (ev->opening || (!ev->play_ok)) return 0;
-       vol = libvlc_audio_get_volume(ev->vlc_mp);
-       return (double)(vol/200.0);
-}
-
-/* STUB */
-static int em_spu_channel_count(void *ef)
-{
-       return 0;
-}
-
-static void em_spu_channel_set(void *ef, int channel)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_MP(ev) return;
-       if (channel < 0) channel = 0;
-       ev->spu_channel = channel;
-       libvlc_video_set_spu(ev->vlc_mp, ev->spu_channel);
-}
-
-static int em_spu_channel_get(void *ef)
-{
-       int num = 0;
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return 0;
-       ASSERT_EV_MP(ev) return 0;
-       if (ev->opening || (!ev->play_ok)) return 0;
-       num = libvlc_video_get_spu(ev->vlc_mp);
-       return num;
-}
-
-/* STUB */
-static const char * em_spu_channel_name_get(void *ef, int channel)
-{
-       return NULL;
-}
-
-/* STUB */
-static void em_spu_channel_mute_set(void *ef, int mute)
-{
-       return;
-}
-
-/* STUB */
-static int em_spu_channel_mute_get(void *ef)
-{
-       return 0;
-}
-
-static int em_chapter_count(void *ef)
-{
-       int num = 0;
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return 0;
-       ASSERT_EV_MP(ev) return 0;
-       if (ev->opening || (!ev->play_ok)) return 0;
-       num = libvlc_media_player_get_chapter_count(ev->vlc_mp);
-       return num;
-}
-
-static void em_chapter_set(void *ef, int chapter)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_MP(ev) return ;
-       libvlc_media_player_set_chapter(ev->vlc_mp, chapter);
-}
-
-static int em_chapter_get(void *ef)
-{
-       int num = 0;
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return 0;
-       ASSERT_EV_MP(ev) return 0;
-       num = libvlc_media_player_get_chapter(ev->vlc_mp);
-       return num;
-}
-
-/* STUB */
-static const char * em_chapter_name_get(void *ef, int chapter)
-{
-       return NULL;
-}
-
-static void em_speed_set(void *ef, double speed)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return;
-       ASSERT_EV_MP(ev) return;
-       libvlc_media_player_set_rate(ev->vlc_mp, speed);
-}
-
-static double em_speed_get(void *ef)
-{
-       float speed = 0;
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev) return 0;
-       ASSERT_EV_MP(ev) return 0;
-       speed = libvlc_media_player_get_rate(ev->vlc_mp);
-       return (double)speed;
-}
-
-static int em_eject(void *ef)
-{
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       if (system("eject"))
-         fprintf(stderr, "Eject failed!\n");
-       return 1;
-}
-
-static const char * em_meta_get(void *ef, int meta)
-{
-       char * meta_data = NULL;
-       Emotion_Vlc_Video *ev;
-
-       ev = (Emotion_Vlc_Video *)ef;
-       ASSERT_EV(ev)   return NULL;
-       ASSERT_EV_M(ev) return NULL;
-       if ((ev->opening) || (!ev->play_ok)) return NULL;
-       switch (meta)
-       {
-               case META_TRACK_TITLE:
-                       meta_data = libvlc_media_get_meta(ev->vlc_m, libvlc_meta_Title);
-                       break;
-               case META_TRACK_ARTIST:
-                       meta_data = libvlc_media_get_meta(ev->vlc_m, libvlc_meta_Artist);
-                       break;
-               case META_TRACK_GENRE:
-                       meta_data = libvlc_media_get_meta(ev->vlc_m, libvlc_meta_Genre);
-                       break;
-               case META_TRACK_COMMENT:
-                       meta_data = libvlc_media_get_meta(ev->vlc_m, libvlc_meta_Description);
-                       break;
-               case META_TRACK_ALBUM:
-                       meta_data = libvlc_media_get_meta(ev->vlc_m, libvlc_meta_Album);
-                       break;
-               case META_TRACK_YEAR:
-                       meta_data = libvlc_media_get_meta(ev->vlc_m, libvlc_meta_Date);
-                       break;
-               case META_TRACK_DISCID:
-                       meta_data = libvlc_media_get_meta(ev->vlc_m, libvlc_meta_TrackID);
-                       break;
-               default:
-                       break;
-       }
-       return meta_data;
-}
-
-static void _em_event(const libvlc_event_t *event, void *data)
-{
-       Emotion_Vlc_Event *new_ev;
-       Emotion_Vlc_Video *ev;
-
-       ev = data;
-       ASSERT_EV(ev)   return;
-       switch (event->type) {
-               case libvlc_MediaPlayerTimeChanged: {
-                               libvlc_time_t pos = event->u.media_player_time_changed.new_time;
-                               double time = (pos / 1000000.f);
-                               _emotion_video_pos_update(ev->obj, time, 0);
-                               ev->pos = time;
-                               if(ev->len == 0)        {
-                                       pos = libvlc_media_player_get_length(ev->vlc_mp);
-                                       ev->len = (double)(pos / 1000.0);
-                               }
-                       }
-               case libvlc_MediaPlayerPlaying: {
-                               int x, y;
-                               unsigned int tmp;
-                               float fps = 0;
-                               float pos = 0;
-                               float total_pos = 0;
-                               libvlc_time_t time = 0;
-                               libvlc_time_t total_time = 0;
-
-                               /* get video properties */
-                               total_time = libvlc_media_player_get_length(ev->vlc_mp);
-                               fps = libvlc_media_player_get_fps(ev->vlc_mp);
-                               libvlc_video_get_size(ev->vlc_mp, tmp, &x, &y);
-                               /* set them to object */
-                               if(ev->fps == 0)        {
-                                       ev->fps = fps;
-                               }
-                               if(ev->len == 0)        {
-                                       ev->len = (double)(total_time / 1000.0);
-                               }
-                               if((x != 0) && (y != 0))        {
-                                       if((ev->w != x)||(ev->h != y))  {
-                                               int event;
-                                               event = VLC_RESIZE;
-                                               write(ev->fd_slave_write, &event, sizeof(void *));
-                                       }
-                               }
-                       } break;
-               case libvlc_MediaPlayerEndReached: {
-                               ev->play = 0;
-                               _emotion_decode_stop(ev->obj);
-                               _emotion_playback_finished(ev->obj);
-                       } break;
-               default:
-                       break;
-       }
-}
-
-static void *_em_lock(void *par)
-{
-       Emotion_Vlc_Video *ev;
-       Emotion_Vlc_Video_Frame *evvf; 
-
-       /* get current frame */
-       ev = (Emotion_Vlc_Video*)par;
-       evvf = ev->cur_frame;
-
-       /* lock current frame */
-       pthread_mutex_lock(&(evvf->frame_copy_lock));
-       
-       /* send current frame address to vlc */
-       return evvf->frame;
-}
-
-static void  _em_unlock(void *par)
-{
-       float p = 0;
-       int ret;
-       int event;
-       Emotion_Vlc_Video *ev;
-       Emotion_Vlc_Video_Frame *evvf; 
-
-       /* get current frame */
-       ev = (Emotion_Vlc_Video*)par;
-       evvf = ev->cur_frame;
-
-       /* notify a new frame is available */
-       event = VLC_NEW_FRAME;
-       
-       if(ev->video_mute == 0) {
-               ret = write(ev->fd_write, &event, sizeof(void *));
-       }
-       pthread_mutex_unlock(&(evvf->frame_copy_lock));
-
-       return;
-}
-
-static Emotion_Video_Module em_module =
-{
-       em_init, /* init */
-       em_shutdown, /* shutdown */
-       em_file_open, /* file_open */
-       em_file_close, /* file_close */
-       em_play, /* play */
-       em_stop, /* stop */
-       em_size_get, /* size_get */
-       em_pos_set, /* pos_set */
-       em_len_get, /* len_get */
-       em_fps_num_get, /* fps_num_get */
-       em_fps_den_get, /* fps_den_get */
-       em_fps_get, /* fps_get */
-       em_pos_get, /* pos_get */
-       em_vis_set, /* vis_set */
-       em_vis_get, /* vis_get */
-        em_vis_supported, /* vis_supported */
-       em_ratio_get, /* ratio_get */
-       em_video_handled, /* video_handled */
-       em_audio_handled, /* audio_handled */
-       em_seekable, /* seekable */
-       em_frame_done, /* frame_done */
-       em_format_get, /* format_get */
-       em_video_data_size_get, /* video_data_size_get */
-       em_yuv_rows_get, /* yuv_rows_get */
-       em_bgra_data_get, /* bgra_data_get */
-       em_event_feed, /* event_feed */
-       em_event_mouse_button_feed, /* event_mouse_button_feed */
-       em_event_mouse_move_feed, /* event_mouse_move_feed */
-       em_video_channel_count, /* video_channel_count */
-       em_video_channel_set, /* video_channel_set */
-       em_video_channel_get, /* video_channel_get */
-       em_video_channel_name_get, /* video_channel_name_get */
-       em_video_channel_mute_set, /* video_channel_mute_set */
-       em_video_channel_mute_get, /* video_channel_mute_get */
-       em_audio_channel_count, /* audio_channel_count */
-       em_audio_channel_set, /* audio_channel_set */
-       em_audio_channel_get, /* audio_channel_get */
-       em_audio_channel_name_get, /* audio_channel_name_get */
-       em_audio_channel_mute_set, /* audio_channel_mute_set */
-       em_audio_channel_mute_get, /* audio_channel_mute_get */
-       em_audio_channel_volume_set, /* audio_channel_volume_set */
-       em_audio_channel_volume_get, /* audio_channel_volume_get */
-       em_spu_channel_count, /* spu_channel_count */
-       em_spu_channel_set, /* spu_channel_set */
-       em_spu_channel_get, /* spu_channel_get */
-       em_spu_channel_name_get, /* spu_channel_name_get */
-       em_spu_channel_mute_set, /* spu_channel_mute_set */
-       em_spu_channel_mute_get, /* spu_channel_mute_get */
-       em_chapter_count, /* chapter_count */
-       em_chapter_set, /* chapter_set */
-       em_chapter_get, /* chapter_get */
-       em_chapter_name_get, /* chapter_name_get */
-       em_speed_set, /* speed_set */
-       em_speed_get, /* speed_get */
-       em_eject, /* eject */
-       em_meta_get, /* meta_get */
-       NULL /* handle */
-};
-
-static Eina_Bool module_open(Evas_Object *obj, const Emotion_Video_Module **module, void **video, Emotion_Module_Options *opt)
-{
-       if (!module)    {
-               return EINA_FALSE;
-       }
-
-       if (!em_module.init(obj, video, opt))   {
-               return EINA_FALSE;
-       }
-
-       *module = &em_module;
-
-       return EINA_TRUE;
-}
-
-static void module_close(Emotion_Video_Module *module, void *video)
-{
-       em_module.shutdown(video);
-}
-
-
-Eina_Bool
-vlc_module_init(void)
-{
-   return _emotion_module_register("vlc", module_open, module_close);
-}
-
-void
-vlc_module_shutdown(void)
-{
-   _emotion_module_unregister("vlc");
-}
-
-#ifndef EMOTION_STATIC_BUILD_VLC
-
-EINA_MODULE_INIT(vlc_module_init);
-EINA_MODULE_SHUTDOWN(vlc_module_shutdown);
-
-#endif
-
diff --git a/src/modules/vlc/emotion_vlc.h b/src/modules/vlc/emotion_vlc.h
deleted file mode 100644 (file)
index 42c1c1e..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/* 
- * SICMA AERO SEAT
- * code@ife-sit.info
- */
-
-#ifndef EMOTION_VLC_H
-#define EMOTION_VLC_H
-
-#include <vlc/vlc.h>
-#include <fcntl.h>
-#include <pthread.h>
-
-
-/* default values */
-#define WIDTH          10
-#define HEIGHT         10
-
-/* internal values */
-#define EVENT_BEG_ID   6
-#define NB_EVENTS      14
-
-/* checking macros */
-#define ASSERT_EV(ev)          if(!ev)
-#define ASSERT_EV_M(ev)                if(!ev->vlc_m)
-#define ASSERT_EV_MP(ev)       if(!ev->vlc_mp)
-#define ASSERT_EV_VLC(ev)      if(!ev->vlc_player)
-
-/* internal events */
-#define VLC_NEW_FRAME  1
-#define VLC_RESIZE     2
-#define VLC_CHANGE_VOL 3
-
-typedef struct _Emotion_Vlc_Video       Emotion_Vlc_Video;
-typedef struct _Emotion_Vlc_Video_Frame Emotion_Vlc_Video_Frame;
-typedef struct _Emotion_Vlc_Event       Emotion_Vlc_Event;
-
-/* module api EMOTION --> VLC */
-static unsigned char  em_init                    (Evas_Object *obj, void **emotion_video, Emotion_Module_Options *opt);
-static int            em_shutdown                (void *ef);
-static unsigned char  em_file_open               (const char *file, Evas_Object *obj, void *ef);
-static void           em_file_close              (void *ef);
-static void           em_play                    (void *ef, double pos);
-static void           em_stop                    (void *ef);
-static void           em_size_get                (void *ef, int *w, int *h);
-static void           em_pos_set                 (void *ef, double pos);
-static double         em_len_get                 (void *ef);
-static int            em_fps_num_get             (void *ef);
-static int            em_fps_den_get             (void *ef);
-static double         em_fps_get                 (void *ef);
-static double         em_pos_get                 (void *ef);
-static void           em_vis_set                 (void *ef, Emotion_Vis vis);
-static Emotion_Vis    em_vis_get                 (void *ef);
-static Eina_Bool      em_vis_supported(void *ef, Emotion_Vis vis);
-static double         em_ratio_get               (void *ef);
-static int            em_seekable                (void *ef);
-static void           em_frame_done              (void *ef);
-static Emotion_Format em_format_get              (void *ef);
-static void           em_video_data_size_get     (void *ef, int *w, int *h);
-static int            em_yuv_rows_get            (void *ef, int w, int h, unsigned char **yrows, unsigned char **urows, unsigned char **vrows);
-static int            em_bgra_data_get           (void *ef, unsigned char **bgra_data);
-static void           em_event_feed              (void *ef, int event);
-static void           em_event_mouse_button_feed (void *ef, int button, int x, int y);
-static void           em_event_mouse_move_feed   (void *ef, int x, int y);
-static int            em_video_channel_count     (void *ef);
-static void           em_video_channel_set       (void *ef, int channel);
-static int            em_video_channel_get       (void *ef);
-static const char    *em_video_channel_name_get  (void *ef, int channel);
-static void           em_video_channel_mute_set  (void *ef, int mute);
-static int            em_video_channel_mute_get  (void *ef);
-static int            em_audio_channel_count     (void *ef);
-static void           em_audio_channel_set       (void *ef, int channel);
-static int            em_audio_channel_get       (void *ef);
-static const char    *em_audio_channel_name_get  (void *ef, int channel);
-static void           em_audio_channel_mute_set  (void *ef, int mute);
-static int            em_audio_channel_mute_get  (void *ef);
-static void           em_audio_channel_volume_set(void *ef, double vol);
-static double         em_audio_channel_volume_get(void *ef);
-static int            em_spu_channel_count       (void *ef);
-static void           em_spu_channel_set         (void *ef, int channel);
-static int            em_spu_channel_get         (void *ef);
-static const char    *em_spu_channel_name_get    (void *ef, int channel);
-static void           em_spu_channel_mute_set    (void *ef, int mute);
-static int            em_spu_channel_mute_get    (void *ef);
-static int            em_chapter_count           (void *ef);
-static void           em_chapter_set             (void *ef, int chapter);
-static int            em_chapter_get             (void *ef);
-static const char    *em_chapter_name_get        (void *ef, int chapter);
-static void           em_speed_set               (void *ef, double speed);
-static double         em_speed_get               (void *ef);
-static int            em_eject                   (void *ef);
-static const char    *em_meta_get                (void *ef, int meta);
-
-typedef struct _vlc_event_t {
-       libvlc_event_type_t type;
-       int data_length;
-       void * data;
-} vlc_event_t;
-
-/* emotion/vlc main structure */
-struct _Emotion_Vlc_Video
-{
-   /* vlc objects */
-   libvlc_instance_t *      vlc_player;
-   libvlc_media_player_t *   vlc_mp;
-   libvlc_media_t *         vlc_m;
-   libvlc_event_manager_t *  vlc_evtmngr;
-   
-   /* vlc datas */
-   char clock[64], cunlock[64], cdata[64];
-   char width[32], height[32], pitch[32];
-  
-   int                      fd_read, fd_write;
-   int                              fd_slave_read, fd_slave_write;
-   Ecore_Fd_Handler         *fd_handler;
-
-   char                     *filename;
-   volatile double          len;
-   volatile double           pos;
-   double                    fps;
-   double                    ratio;
-   int                       w, h;
-   Evas_Object               *obj;
-   Emotion_Vlc_Video_Frame   *cur_frame;
-   volatile int              spu_channel;
-   volatile int              audio_channel;
-   volatile int              video_channel;
-   volatile int              fq;
-   Emotion_Vis               vis;
-   unsigned char             play : 1;
-   unsigned char             just_loaded : 1;
-   unsigned char             video_mute : 1;
-   unsigned char             audio_mute : 1;
-   unsigned char             spu_mute : 1;
-   Eina_Bool                 opt_no_video : 1;
-   Eina_Bool                 opt_no_audio : 1;
-   volatile unsigned char    delete_me : 1;
-   volatile unsigned char    opening : 1;
-   volatile unsigned char    closing : 1;
-   volatile unsigned char    have_vo : 1;
-   volatile unsigned char    play_ok : 1;
-};
-
-/* structure for frames 2 buffers to keep integrity */
-struct _Emotion_Vlc_Video_Frame
-{
-   unsigned char  *frame;
-   unsigned char  *frame_A;
-   unsigned char  *frame_B;
-   pthread_mutex_t frame_copy_lock;
-};
-
-
-/* internal event struct */
-
-struct _Emotion_Vlc_Event
-{
-   int   type;
-   int   mtype;
-};
-
-#endif
-