emotion: add libvlc module
Summary:
Everything is implemented except visualization, mouse events and some
EMOTION_EVENT. Video can output RGBA, YUY2, YV12 or I420.
About the video sink: this emotion module use libvlc callbacks:
libvlc_video_set_format_callbacks and libvlc_video_set_callbacks. It may be
temporary. Indeed, an other solution is to add an Evas module inside vlc. But
this vlc module would need to link with emotion in order to use
_emotion_frame_new and _emotion_frame_resize private functions. I didn't
succeed to output a frame without these private functions: see
15daff4d3f
List of /* FIXME */:
- Visualization not implemented since there is no API (for now) in libvlc.
- Mouse events not implemented since there is no API (for now) in libvlc.
- Some EMOTION_EVENT are not handled.
- SIGSEGV in evas_gl_common_texture_nv12_update with
EVAS_COLORSPACE_YCBCR420NV12601_PL colorspace.
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3071
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit is contained in:
parent
07fbef6437
commit
afe6f5c3a1
13
configure.ac
13
configure.ac
|
@ -4332,6 +4332,17 @@ AC_ARG_ENABLE([v4l2],
|
||||||
],
|
],
|
||||||
[want_v4l2="${efl_lib_optional_eeze}"])
|
[want_v4l2="${efl_lib_optional_eeze}"])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([libvlc],
|
||||||
|
[AS_HELP_STRING([--enable-libvlc],[enable libvlc support. @<:@default=disabled@:>@])],
|
||||||
|
[
|
||||||
|
if test "x${enableval}" = "xyes" ; then
|
||||||
|
want_libvlc="yes"
|
||||||
|
else
|
||||||
|
want_libvlc="no"
|
||||||
|
fi
|
||||||
|
],
|
||||||
|
[want_libvlc="no"])
|
||||||
|
|
||||||
### Checks for programs
|
### Checks for programs
|
||||||
|
|
||||||
### Checks for libraries
|
### Checks for libraries
|
||||||
|
@ -4354,11 +4365,13 @@ have_gst_xoverlay="no"
|
||||||
EMOTION_MODULE([xine], [${want_xine}])
|
EMOTION_MODULE([xine], [${want_xine}])
|
||||||
EMOTION_MODULE([gstreamer], [${want_gstreamer}])
|
EMOTION_MODULE([gstreamer], [${want_gstreamer}])
|
||||||
EMOTION_MODULE([gstreamer1], [${want_gstreamer1}])
|
EMOTION_MODULE([gstreamer1], [${want_gstreamer1}])
|
||||||
|
EMOTION_MODULE([libvlc], [${want_libvlc}])
|
||||||
EMOTION_MODULE([generic], [${want_emotion_generic}])
|
EMOTION_MODULE([generic], [${want_emotion_generic}])
|
||||||
|
|
||||||
EFL_ADD_FEATURE([EMOTION], [xine])
|
EFL_ADD_FEATURE([EMOTION], [xine])
|
||||||
EFL_ADD_FEATURE([EMOTION], [gstreamer])
|
EFL_ADD_FEATURE([EMOTION], [gstreamer])
|
||||||
EFL_ADD_FEATURE([EMOTION], [gstreamer1])
|
EFL_ADD_FEATURE([EMOTION], [gstreamer1])
|
||||||
|
EFL_ADD_FEATURE([EMOTION], [libvlc])
|
||||||
EFL_ADD_FEATURE([EMOTION], [generic], [${want_emotion_generic}])
|
EFL_ADD_FEATURE([EMOTION], [generic], [${want_emotion_generic}])
|
||||||
|
|
||||||
EFL_EVAL_PKGS([EMOTION])
|
EFL_EVAL_PKGS([EMOTION])
|
||||||
|
|
|
@ -58,6 +58,20 @@ AC_DEFUN([EMOTION_MODULE_DEP_CHECK_GSTREAMER1],
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl use: EMOTION_MODULE_DEP_CHECK_LIBVLC(want_static)
|
||||||
|
dnl where want_engine = yes or static
|
||||||
|
AC_DEFUN([EMOTION_MODULE_DEP_CHECK_LIBVLC],
|
||||||
|
[dnl
|
||||||
|
LIBVLC_VER=3.0
|
||||||
|
requirements="libvlc >= ${LIBVLC_VER}"
|
||||||
|
if test "$1" = "static"; then
|
||||||
|
EFL_DEPEND_PKG([EMOTION], [EMOTION_MODULE_LIBVLC], [${requirements}])
|
||||||
|
else
|
||||||
|
PKG_CHECK_MODULES([EMOTION_MODULE_LIBVLC], [${requirements}])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
dnl use: EMOTION_MODULE_DEP_CHECK_GENERIC(want_static)
|
dnl use: EMOTION_MODULE_DEP_CHECK_GENERIC(want_static)
|
||||||
dnl where want_engine = yes or static
|
dnl where want_engine = yes or static
|
||||||
AC_DEFUN([EMOTION_MODULE_DEP_CHECK_GENERIC],
|
AC_DEFUN([EMOTION_MODULE_DEP_CHECK_GENERIC],
|
||||||
|
|
|
@ -157,6 +157,35 @@ modules_emotion_gstreamer1_module_la_LIBTOOLFLAGS = --tag=disable-static
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# LibVLC
|
||||||
|
EMOTION_LIBVLC_SOURCES =\
|
||||||
|
modules/emotion/libvlc/emotion_libvlc.c
|
||||||
|
|
||||||
|
if EMOTION_STATIC_BUILD_LIBVLC
|
||||||
|
lib_emotion_libemotion_la_SOURCES += $(EMOTION_LIBVLC_SOURCES)
|
||||||
|
else
|
||||||
|
if EMOTION_BUILD_LIBVLC
|
||||||
|
emotionmodulelibvlcdir = $(libdir)/emotion/modules/libvlc/$(MODULE_ARCH)
|
||||||
|
emotionmodulelibvlc_LTLIBRARIES = modules/emotion/libvlc/module.la
|
||||||
|
|
||||||
|
# Workaround for broken parallel install support in automake (relink issue)
|
||||||
|
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328
|
||||||
|
install_emotionmodulelibvlcLTLIBRARIES = install-emotionmodulelibvlcLTLIBRARIES
|
||||||
|
$(install_emotionmodulelibvlcLTLIBRARIES): install-libLTLIBRARIES
|
||||||
|
|
||||||
|
modules_emotion_libvlc_module_la_SOURCES = $(EMOTION_LIBVLC_SOURCES)
|
||||||
|
modules_emotion_libvlc_module_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
|
||||||
|
@EMOTION_CFLAGS@ \
|
||||||
|
@EMOTION_MODULE_LIBVLC_CFLAGS@
|
||||||
|
modules_emotion_libvlc_module_la_LIBADD = \
|
||||||
|
@USE_EMOTION_LIBS@ \
|
||||||
|
@EMOTION_MODULE_LIBVLC_LIBS@
|
||||||
|
modules_emotion_libvlc_module_la_DEPENDENCIES = @USE_EMOTION_INTERNAL_LIBS@
|
||||||
|
modules_emotion_libvlc_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
|
||||||
|
modules_emotion_libvlc_module_la_LIBTOOLFLAGS = --tag=disable-static
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# Generic
|
# Generic
|
||||||
EMOTION_GENERIC_SOURCES = \
|
EMOTION_GENERIC_SOURCES = \
|
||||||
modules/emotion/generic/emotion_generic.h \
|
modules/emotion/generic/emotion_generic.h \
|
||||||
|
|
|
@ -13,6 +13,10 @@ void xine_module_shutdown(void);
|
||||||
Eina_Bool gstreamer_module_init(void);
|
Eina_Bool gstreamer_module_init(void);
|
||||||
void gstreamer_module_shutdown(void);
|
void gstreamer_module_shutdown(void);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef EMOTION_STATIC_BUILD_LIBVLC
|
||||||
|
Eina_Bool libvlc_module_init(void);
|
||||||
|
void libvlc_module_shutdown(void);
|
||||||
|
#endif
|
||||||
#ifdef EMOTION_STATIC_BUILD_GENERIC
|
#ifdef EMOTION_STATIC_BUILD_GENERIC
|
||||||
Eina_Bool generic_module_init(void);
|
Eina_Bool generic_module_init(void);
|
||||||
void generic_module_shutdown(void);
|
void generic_module_shutdown(void);
|
||||||
|
@ -78,6 +82,9 @@ _emotion_modules_load(void)
|
||||||
#endif
|
#endif
|
||||||
#ifdef EMOTION_BUILD_XINE
|
#ifdef EMOTION_BUILD_XINE
|
||||||
"xine",
|
"xine",
|
||||||
|
#endif
|
||||||
|
#ifdef EMOTION_BUILD_LIBVLC
|
||||||
|
"libvlc",
|
||||||
#endif
|
#endif
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
@ -118,6 +125,9 @@ emotion_modules_init(void)
|
||||||
#if defined(EMOTION_STATIC_BUILD_GSTREAMER) || defined(EMOTION_STATIC_BUILD_GSTREAMER1)
|
#if defined(EMOTION_STATIC_BUILD_GSTREAMER) || defined(EMOTION_STATIC_BUILD_GSTREAMER1)
|
||||||
gstreamer_module_init();
|
gstreamer_module_init();
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef EMOTION_STATIC_BUILD_LIBVLC
|
||||||
|
libvlc_module_init();
|
||||||
|
#endif
|
||||||
#ifdef EMOTION_STATIC_BUILD_GENERIC
|
#ifdef EMOTION_STATIC_BUILD_GENERIC
|
||||||
generic_module_init();
|
generic_module_init();
|
||||||
#endif
|
#endif
|
||||||
|
@ -136,6 +146,9 @@ emotion_modules_shutdown(void)
|
||||||
#if defined(EMOTION_STATIC_BUILD_GSTREAMER) || defined(EMOTION_STATIC_BUILD_GSTREAMER1)
|
#if defined(EMOTION_STATIC_BUILD_GSTREAMER) || defined(EMOTION_STATIC_BUILD_GSTREAMER1)
|
||||||
gstreamer_module_shutdown();
|
gstreamer_module_shutdown();
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef EMOTION_STATIC_BUILD_LIBVLC
|
||||||
|
libvlc_module_shutdown();
|
||||||
|
#endif
|
||||||
#ifdef EMOTION_STATIC_BUILD_GENERIC
|
#ifdef EMOTION_STATIC_BUILD_GENERIC
|
||||||
generic_module_shutdown();
|
generic_module_shutdown();
|
||||||
#endif
|
#endif
|
||||||
|
@ -366,6 +379,7 @@ emotion_engine_instance_new(const char *name, Evas_Object *obj, Emotion_Module_O
|
||||||
if (!m) m = _find_mod("xine");
|
if (!m) m = _find_mod("xine");
|
||||||
if (!m) m = _find_mod("gstreamer");
|
if (!m) m = _find_mod("gstreamer");
|
||||||
if (!m) m = _find_mod("gstreamer1");
|
if (!m) m = _find_mod("gstreamer1");
|
||||||
|
if (!m) m = _find_mod("libvlc");
|
||||||
if (m) eina_module_load(m);
|
if (m) eina_module_load(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue