fix video overlay suport in emotion.

SVN revision: 71161
This commit is contained in:
Carsten Haitzler 2012-05-16 11:18:57 +00:00
parent cf46d0d388
commit f243db26ac
3 changed files with 44 additions and 61 deletions

View File

@ -1,35 +1,3 @@
2007-09-01 Vincent Torri <doursse at users dot sf dot net>
* src/modules/emotion_gstreamer.c: (em_file_open):
* src/modules/emotion_gstreamer_pipeline.c: (cb_handoff),
(emotion_pipeline_dvd_build), (emotion_pipeline_uri_build),
(emotion_pipeline_file_build), (_emotion_streams_sinks_get),
(_emotion_video_sink_fill), (_emotion_audio_sink_fill):
* src/modules/emotion_gstreamer_pipeline.h:
add the support of URI playback. Minor fixes.
Fix bug #114
2007-10-31 Vincent Torri <doursse at users dot sf dot net>
* configure.in:
* src/bin/emotion_test_main.c:
* src/lib/Makefile.am:
* src/lib/emotion_private.h:
* src/lib/emotion_smart.c:
* src/modules/Makefile.am:
* src/modules/emotion_gstreamer.c:
Use ecore_plugin instead of dlfcn
The modules names are now "xine" and "gstreamer" (it's useless to add
the extension, as ecore_plugin does not need it).
Look for the modules in path that is pointed by the env variable
EMOTION_MODULES_DIR first.
Fix a leak in the gstreamer module
Remove some trailing spaces
Fix bug #223
add the support of URI playback. Minor fixes.
Fix bug #114
2012-04-26 Carsten Haitzler (The Rasterman)
* 1.0.0 release
@ -37,3 +5,8 @@
2012-04-30 Jérôme Pinot
* Fix build out of tree.
2012-05-16 Carsten Haitzler (The Rasterman)
* Fix emotion video overlay support to detect correct engine name.

View File

@ -185,33 +185,6 @@ if test "x$want_ecore_x" = "xyes" && test "x$have_ecore_x" = "xno" ; then
AC_MSG_ERROR([ecore-x support requested, but not found by pkg-config.])
fi
# Check if gstreamer X Overlay is available
build_xoverlay="no"
if test "x${enable_gstreamer}" = "xyes" ; then
PKG_CHECK_MODULES([GSTREAMER_INTERFACE],
[gstreamer-interfaces-0.10 >= 0.10.34],
[build_xoverlay="yes"],
[build_xoverlay="no"])
if test "x${build_xoverlay}" = "xyes" ; then
save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS ${GSTREAMER_CFLAGS} ${GSTREAMER_INTERFACE_CFLAGS}"
AC_CHECK_HEADER([gst/interfaces/xoverlay.h],
[
AC_DEFINE(HAVE_XOVERLAY_H, 1, [Build with Gstreamer Xoverlay support])
build_xoverlay="yes"
],
[build_xoverlay="no"])
CPPFLAGS=$save_CPPFLAGS
save_LDFLAGS=${LDFLAGS}
LDFLAGS="${LDFLAGS} ${GSTREAMER_INTERFACES}"
AC_CHECK_LIB([gstinterfaces-0.10],
[gst_x_overlay_set_window_handle],
[AC_DEFINE([HAVE_X_OVERLAY_SET], [1], [Use gst_x_overlay_set_window_handle instead of old deprecated gst_x_overlay_set_xwindow_id])])
LDFLAGS=$sava_LDFLAGS
fi
fi
### Checks for header files
AC_CHECK_HEADERS([unistd.h])
@ -289,6 +262,32 @@ if test "x${enable_xine}" = "xno" && test "x${enable_gstreamer}" = "xno" && test
AC_MSG_ERROR([Xine, Gstreamer or Generic backends must be selected to build Emotion])
fi
# Check if gstreamer X Overlay is available
build_xoverlay="no"
if test "x${enable_gstreamer}" = "xyes" ; then
PKG_CHECK_MODULES([GSTREAMER_INTERFACE],
[gstreamer-interfaces-0.10 >= 0.10.34],
[build_xoverlay="yes"],
[build_xoverlay="no"])
if test "x${build_xoverlay}" = "xyes" ; then
save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS ${GSTREAMER_CFLAGS} ${GSTREAMER_INTERFACE_CFLAGS}"
AC_CHECK_HEADER([gst/interfaces/xoverlay.h],
[
AC_DEFINE(HAVE_XOVERLAY_H, 1, [Build with Gstreamer Xoverlay support])
build_xoverlay="yes"
],
[build_xoverlay="no"])
CPPFLAGS=$save_CPPFLAGS
save_LDFLAGS=${LDFLAGS}
LDFLAGS="${LDFLAGS} ${GSTREAMER_INTERFACES}"
AC_CHECK_LIB([gstinterfaces-0.10],
[gst_x_overlay_set_window_handle],
[AC_DEFINE([HAVE_X_OVERLAY_SET], [1], [Use gst_x_overlay_set_window_handle instead of old deprecated gst_x_overlay_set_xwindow_id])])
LDFLAGS=$sava_LDFLAGS
fi
fi
### install and build examples

View File

@ -1033,9 +1033,20 @@ gstreamer_video_sink_new(Emotion_Gstreamer_Video *ev,
#if defined HAVE_ECORE_X && defined HAVE_XOVERLAY_H
if (window_manager_video)
{
engines = evas_render_method_list();
Eina_List *l;
const char *ename;
engines = evas_render_method_list();
engine = eina_list_nth(engines, evas_output_method_get(evas_object_evas_get(obj)) - 1);
EINA_LIST_FOREACH(engines, l, ename)
{
if (evas_render_method_lookup(ename) ==
evas_output_method_get(evas_object_evas_get(obj)))
{
engine = ename;
break;
}
}
if (ev->priority && engine && strstr(engine, "_x11") != NULL)
{