forked from enlightenment/efl
parent
dc5e3e07af
commit
bad4d6e848
|
@ -1,2 +1,3 @@
|
||||||
The Rasterman (Carsten Haitzler) <raster@rasterman.com>
|
The Rasterman (Carsten Haitzler) <raster@rasterman.com>
|
||||||
|
doursse (Vincent Torri) <torri@maths.univ-evry.fr>
|
||||||
|
captainigloo
|
||||||
|
|
|
@ -1,2 +1,17 @@
|
||||||
|
|
||||||
|
Emotion smart object
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
|
||||||
|
Xine module
|
||||||
|
-----------
|
||||||
|
|
||||||
* Fix seek and get_pos threads delete bugs (infinite loop)
|
* Fix seek and get_pos threads delete bugs (infinite loop)
|
||||||
* Add support of visualizations for audio files (Goom...)
|
* Add support of visualizations for audio files (Goom...)
|
||||||
|
|
||||||
|
|
||||||
|
Gstreamer module
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* Add gststreamselector to support multiple video and audio streams.
|
||||||
|
* Add support of visualizations for audio files (Goom...)
|
||||||
|
|
|
@ -130,17 +130,40 @@ AC_PATH_GENERIC(embryo, 0.9.1,
|
||||||
)
|
)
|
||||||
|
|
||||||
AC_PATH_GENERIC(xine, 1.0.0,
|
AC_PATH_GENERIC(xine, 1.0.0,
|
||||||
[ ],
|
[HAVE_XINE="yes"],
|
||||||
[ AC_MSG_ERROR(Xine isn't installed)]
|
[HAVE_XINE="no"]
|
||||||
)
|
)
|
||||||
|
|
||||||
xine_plugins=`$XINE_CONFIG --plugindir`
|
xine_plugins=`$XINE_CONFIG --plugindir`
|
||||||
AC_SUBST(xine_plugins)
|
AC_SUBST(xine_plugins)
|
||||||
|
|
||||||
|
dnl gstreamer
|
||||||
|
gstreamer_cflags=
|
||||||
|
gstreamer_libs=
|
||||||
|
|
||||||
|
dnl Gstreamer version requirement
|
||||||
|
GST_REQS=0.8.10
|
||||||
|
GSTPLUG_REQS=0.8.10
|
||||||
|
GST_MAJORMINOR=0.8
|
||||||
|
|
||||||
|
PKG_CHECK_MODULES(GST, \
|
||||||
|
gstreamer-$GST_MAJORMINOR >= $GST_REQS,
|
||||||
|
HAVE_GSTREAMER="yes", HAVE_GSTREAMER="no")
|
||||||
|
|
||||||
|
AC_SUBST(GST_CFLAGS)
|
||||||
|
AC_SUBST(GST_LIBS)
|
||||||
|
|
||||||
|
if test "${HAVE_XINE}" = "no" && test "${HAVE_GSTREAMER}" = "no" ; then
|
||||||
|
AC_MSG_ERROR([Xine or Gstreamer must be installed to build emotion])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL([BUILD_XINE_MODULE], [test "$HAVE_XINE" = yes])
|
||||||
|
AM_CONDITIONAL([BUILD_GSTREAMER_MODULE], [test "$HAVE_GSTREAMER" = yes])
|
||||||
|
|
||||||
AC_CHECK_LIB(dl, dlopen, dlopen_libs=-ldl)
|
AC_CHECK_LIB(dl, dlopen, dlopen_libs=-ldl)
|
||||||
AC_SUBST(dlopen_libs)
|
AC_SUBST(dlopen_libs)
|
||||||
|
|
||||||
requirements="eet evas ecore edje libxine"
|
requirements="eet evas ecore edje libxine gstreamer"
|
||||||
AC_SUBST(requirements)
|
AC_SUBST(requirements)
|
||||||
|
|
||||||
AC_OUTPUT([
|
AC_OUTPUT([
|
||||||
|
@ -156,3 +179,31 @@ emotion-config
|
||||||
],[
|
],[
|
||||||
chmod +x emotion-config
|
chmod +x emotion-config
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
## Info
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "------------------------------------------------------------------------"
|
||||||
|
echo "$PACKAGE $VERSION"
|
||||||
|
echo "------------------------------------------------------------------------"
|
||||||
|
echo
|
||||||
|
echo "Configuration Options Summary:"
|
||||||
|
echo
|
||||||
|
echo " Modules:"
|
||||||
|
echo " Xine...............: $HAVE_XINE"
|
||||||
|
echo " Gstreamer..........: $HAVE_GSTREAMER"
|
||||||
|
echo
|
||||||
|
echo " Compilation..........: make"
|
||||||
|
echo
|
||||||
|
echo " Installation.........: make install"
|
||||||
|
echo
|
||||||
|
echo " prefix.........: $prefix"
|
||||||
|
echo " binaries.......: $bindir"
|
||||||
|
echo " libraries......: $libdir"
|
||||||
|
echo " headers........: $includedir"
|
||||||
|
echo
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ These routines are used for Emotion.
|
||||||
|
|
||||||
@mainpage Emotion Library Documentation
|
@mainpage Emotion Library Documentation
|
||||||
@image html emotion.png
|
@image html emotion.png
|
||||||
@version 0.0.1
|
@version @VERSION@
|
||||||
@author Carsten Haitzler <raster@rasterman.com>
|
@author Carsten Haitzler <raster@rasterman.com>
|
||||||
@date 2003-2004
|
@date 2003-2004
|
||||||
|
|
||||||
|
|
|
@ -715,7 +715,7 @@ video_obj_signal_frame_move_cb(void *data, Evas_Object *o, const char *emission,
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_video_object(char *file)
|
init_video_object(char *module_filename, char *filename)
|
||||||
{
|
{
|
||||||
Evas_Object *o, *oe;
|
Evas_Object *o, *oe;
|
||||||
int iw, ih;
|
int iw, ih;
|
||||||
|
@ -725,7 +725,9 @@ init_video_object(char *file)
|
||||||
|
|
||||||
/* basic video object setup */
|
/* basic video object setup */
|
||||||
o = emotion_object_add(evas);
|
o = emotion_object_add(evas);
|
||||||
emotion_object_file_set(o, file);
|
if (!emotion_object_init(o, module_filename))
|
||||||
|
return;
|
||||||
|
emotion_object_file_set(o, filename);
|
||||||
emotion_object_play_set(o, 1);
|
emotion_object_play_set(o, 1);
|
||||||
evas_object_move(o, 0, 0);
|
evas_object_move(o, 0, 0);
|
||||||
evas_object_resize(o, 320, 240);
|
evas_object_resize(o, 320, 240);
|
||||||
|
@ -806,11 +808,14 @@ enter_idle(void *data)
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
char *module_filename;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (main_start(argc, argv) < 1) return -1;
|
if (main_start(argc, argv) < 1) return -1;
|
||||||
bg_setup();
|
bg_setup();
|
||||||
|
|
||||||
|
module_filename = "emotion_decoder_xine.so";
|
||||||
|
|
||||||
for (i = 1; i < argc; i++)
|
for (i = 1; i < argc; i++)
|
||||||
{
|
{
|
||||||
if (((!strcmp(argv[i], "-g")) ||
|
if (((!strcmp(argv[i], "-g")) ||
|
||||||
|
@ -822,7 +827,7 @@ main(int argc, char **argv)
|
||||||
(!strcmp(argv[i], "--help"))))
|
(!strcmp(argv[i], "--help"))))
|
||||||
{
|
{
|
||||||
printf("Usage:\n");
|
printf("Usage:\n");
|
||||||
printf(" %s [-gl] [-g WxH] \n", argv[0]);
|
printf(" %s [-gl] [-g WxH] [-xine] [-gstreamer] filename\n", argv[0]);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
else if (!strcmp(argv[i], "-gl"))
|
else if (!strcmp(argv[i], "-gl"))
|
||||||
|
@ -831,9 +836,18 @@ main(int argc, char **argv)
|
||||||
else if (!strcmp(argv[i], "-fb"))
|
else if (!strcmp(argv[i], "-fb"))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
else
|
else if (!strcmp(argv[i], "-xine"))
|
||||||
{
|
{
|
||||||
init_video_object(argv[i]);
|
module_filename = "emotion_decoder_xine.so";
|
||||||
|
}
|
||||||
|
else if (!strcmp(argv[i], "-gstreamer"))
|
||||||
|
{
|
||||||
|
module_filename = "emotion_decoder_gstreamer.so";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf ("module : %s\n", module_filename);
|
||||||
|
init_video_object(module_filename, argv[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,12 @@
|
||||||
|
|
||||||
#include <Evas.h>
|
#include <Evas.h>
|
||||||
|
|
||||||
|
enum _Emotion_Module
|
||||||
|
{
|
||||||
|
EMOTION_MODULE_XINE,
|
||||||
|
EMOTION_MODULE_GSTREAMER
|
||||||
|
};
|
||||||
|
|
||||||
enum _Emotion_Event
|
enum _Emotion_Event
|
||||||
{
|
{
|
||||||
EMOTION_EVENT_MENU1, // Escape Menu
|
EMOTION_EVENT_MENU1, // Escape Menu
|
||||||
|
@ -46,6 +52,7 @@ enum _Emotion_Meta_Info
|
||||||
EMOTION_META_INFO_TRACK_DISC_ID
|
EMOTION_META_INFO_TRACK_DISC_ID
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef enum _Emotion_Module Emotion_Module;
|
||||||
typedef enum _Emotion_Event Emotion_Event;
|
typedef enum _Emotion_Event Emotion_Event;
|
||||||
typedef enum _Emotion_Meta_Info Emotion_Meta_Info;
|
typedef enum _Emotion_Meta_Info Emotion_Meta_Info;
|
||||||
|
|
||||||
|
@ -58,8 +65,8 @@ extern "C" {
|
||||||
|
|
||||||
/* api calls available */
|
/* api calls available */
|
||||||
Evas_Object *emotion_object_add (Evas *evas);
|
Evas_Object *emotion_object_add (Evas *evas);
|
||||||
Evas_Bool emotion_object_init (Evas_Object *obj);
|
Evas_Bool emotion_object_init (Evas_Object *obj, const char *module_filename);
|
||||||
void emotion_object_file_set (Evas_Object *obj, const char *file);
|
void emotion_object_file_set (Evas_Object *obj, const char *filename);
|
||||||
const char *emotion_object_file_get (Evas_Object *obj);
|
const char *emotion_object_file_get (Evas_Object *obj);
|
||||||
void emotion_object_play_set (Evas_Object *obj, Evas_Bool play);
|
void emotion_object_play_set (Evas_Object *obj, Evas_Bool play);
|
||||||
Evas_Bool emotion_object_play_get (Evas_Object *obj);
|
Evas_Bool emotion_object_play_get (Evas_Object *obj);
|
||||||
|
|
|
@ -35,6 +35,8 @@ struct _Smart_Data
|
||||||
Emotion_Video_Module *module;
|
Emotion_Video_Module *module;
|
||||||
void *video;
|
void *video;
|
||||||
|
|
||||||
|
char *module_name;
|
||||||
|
|
||||||
char *file;
|
char *file;
|
||||||
Evas_Object *obj;
|
Evas_Object *obj;
|
||||||
double ratio;
|
double ratio;
|
||||||
|
@ -94,12 +96,15 @@ _emotion_module_open(const char *name, Evas_Object *obj, Emotion_Video_Module **
|
||||||
void *handle;
|
void *handle;
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s/%s", PACKAGE_LIB_DIR"/emotion/", name);
|
snprintf(buf, sizeof(buf), "%s%s", PACKAGE_LIB_DIR"/emotion/",
|
||||||
|
name);
|
||||||
|
printf ("module : %s\n", buf);
|
||||||
handle = dlopen(buf, RTLD_NOW | RTLD_GLOBAL);
|
handle = dlopen(buf, RTLD_NOW | RTLD_GLOBAL);
|
||||||
if (handle)
|
if (handle)
|
||||||
{
|
{
|
||||||
unsigned char (*func_module_open)(Evas_Object *, Emotion_Video_Module **, void **);
|
unsigned char (*func_module_open)(Evas_Object *, Emotion_Video_Module **, void **);
|
||||||
|
|
||||||
|
printf ("module opened\n");
|
||||||
func_module_open = dlsym(handle, "module_open");
|
func_module_open = dlsym(handle, "module_open");
|
||||||
if (func_module_open)
|
if (func_module_open)
|
||||||
{
|
{
|
||||||
|
@ -111,6 +116,12 @@ _emotion_module_open(const char *name, Evas_Object *obj, Emotion_Video_Module **
|
||||||
}
|
}
|
||||||
dlclose(handle);
|
dlclose(handle);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char *err;
|
||||||
|
err = dlerror();
|
||||||
|
printf ("pas de module : %s\n", err);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,6 +140,9 @@ _emotion_module_close(Emotion_Video_Module *mod, void *video)
|
||||||
/*******************************/
|
/*******************************/
|
||||||
/* Externally accessible calls */
|
/* Externally accessible calls */
|
||||||
/*******************************/
|
/*******************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Evas_Object *
|
Evas_Object *
|
||||||
emotion_object_add(Evas *evas)
|
emotion_object_add(Evas *evas)
|
||||||
{
|
{
|
||||||
|
@ -137,7 +151,7 @@ emotion_object_add(Evas *evas)
|
||||||
}
|
}
|
||||||
|
|
||||||
Evas_Bool
|
Evas_Bool
|
||||||
emotion_object_init(Evas_Object *obj)
|
emotion_object_init(Evas_Object *obj, const char *module_filename)
|
||||||
{
|
{
|
||||||
Smart_Data *sd;
|
Smart_Data *sd;
|
||||||
|
|
||||||
|
@ -162,10 +176,14 @@ emotion_object_init(Evas_Object *obj)
|
||||||
|
|
||||||
if (!sd->module || !sd->video)
|
if (!sd->module || !sd->video)
|
||||||
{
|
{
|
||||||
if (!_emotion_module_open("emotion_decoder_xine.so", obj, &sd->module, &sd->video))
|
if (!_emotion_module_open(module_filename, obj, &sd->module, &sd->video))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!sd->module || !sd->video)
|
||||||
|
if (!_emotion_module_open(module_filename, obj, &sd->module, &sd->video))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,27 +195,22 @@ emotion_object_file_set(Evas_Object *obj, const char *file)
|
||||||
E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
|
E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
|
||||||
|
|
||||||
if ((file) && (sd->file) && (!strcmp(file, sd->file))) return;
|
if ((file) && (sd->file) && (!strcmp(file, sd->file))) return;
|
||||||
|
|
||||||
if ((file) && (strlen(file) > 0))
|
if ((file) && (strlen(file) > 0))
|
||||||
{
|
{
|
||||||
int w, h;
|
int w, h;
|
||||||
|
|
||||||
if (!emotion_object_init(obj))
|
|
||||||
return;
|
|
||||||
sd->file = strdup(file);
|
sd->file = strdup(file);
|
||||||
if (sd->module)
|
if (sd->module)
|
||||||
{
|
{
|
||||||
sd->module->file_close(sd->video);
|
sd->module->file_close(sd->video);
|
||||||
evas_object_image_size_set(sd->obj, 0, 0);
|
evas_object_image_size_set(sd->obj, 0, 0);
|
||||||
}
|
}
|
||||||
if (!sd->module->file_open(sd->file, obj, sd->video))
|
if (!sd->module->file_open(sd->file, obj, sd->video))
|
||||||
return;
|
return;
|
||||||
sd->module->size_get(sd->video, &w, &h);
|
sd->module->size_get(sd->video, &w, &h);
|
||||||
evas_object_image_size_set(sd->obj, w, h);
|
evas_object_image_size_set(sd->obj, w, h);
|
||||||
sd->ratio = sd->module->ratio_get(sd->video);
|
sd->ratio = sd->module->ratio_get(sd->video);
|
||||||
sd->pos = 0.0;
|
sd->pos = 0.0;
|
||||||
if (sd->play)
|
if (sd->play) sd->module->play(sd->video, 0.0);
|
||||||
sd->module->play(sd->video, 0.0);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -238,8 +251,11 @@ emotion_object_play_get(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
Smart_Data *sd;
|
Smart_Data *sd;
|
||||||
|
|
||||||
|
printf ("play get\n");
|
||||||
E_SMART_OBJ_GET_RETURN(sd, obj, E_OBJ_NAME, 0);
|
E_SMART_OBJ_GET_RETURN(sd, obj, E_OBJ_NAME, 0);
|
||||||
|
printf ("play get1\n");
|
||||||
if (!sd->video) return 0;
|
if (!sd->video) return 0;
|
||||||
|
printf ("play get2\n");
|
||||||
return sd->play;
|
return sd->play;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -810,7 +826,7 @@ _emotion_frame_resize(Evas_Object *obj, int w, int h, double ratio)
|
||||||
Smart_Data *sd;
|
Smart_Data *sd;
|
||||||
int iw, ih;
|
int iw, ih;
|
||||||
int changed = 0;
|
int changed = 0;
|
||||||
|
printf ("frame resize %d %d\n", w, h);
|
||||||
E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
|
E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
|
||||||
evas_object_image_size_get(sd->obj, &iw, &ih);
|
evas_object_image_size_get(sd->obj, &iw, &ih);
|
||||||
if ((w != iw) || (h != ih))
|
if ((w != iw) || (h != ih))
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
## Process this file with automake to produce Makefile.in
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
if BUILD_XINE_MODULE
|
||||||
SUBDIRS = xine
|
SUBDIRS = xine
|
||||||
|
XINE_LIB_NAME=emotion_decoder_xine.la
|
||||||
|
endif
|
||||||
|
|
||||||
|
if BUILD_GSTREAMER_MODULE
|
||||||
|
GSTREAMER_LIB_NAME = emotion_decoder_gstreamer.la
|
||||||
|
endif
|
||||||
|
|
||||||
#AUTOMAKE_OPTIONS = 1.4 foreign
|
#AUTOMAKE_OPTIONS = 1.4 foreign
|
||||||
|
|
||||||
|
@ -9,15 +16,28 @@ MAINTAINERCLEANFILES = Makefile.in
|
||||||
INCLUDES = -I$(top_srcdir) \
|
INCLUDES = -I$(top_srcdir) \
|
||||||
-I$(top_srcdir)/src/lib \
|
-I$(top_srcdir)/src/lib \
|
||||||
-I$(top_srcdir)/src/modules \
|
-I$(top_srcdir)/src/modules \
|
||||||
@EVAS_CFLAGS@ @ECORE_CFLAGS@ @XINE_CFLAGS@
|
@EVAS_CFLAGS@ @ECORE_CFLAGS@ @XINE_CFLAGS@ @GST_CFLAGS@
|
||||||
|
|
||||||
pkgdir = $(libdir)/emotion
|
pkgdir = $(libdir)/emotion
|
||||||
|
|
||||||
pkg_LTLIBRARIES = emotion_decoder_xine.la
|
pkg_LTLIBRARIES = $(XINE_LIB_NAME) $(GSTREAMER_LIB_NAME)
|
||||||
emotion_decoder_xine_la_SOURCES = \
|
|
||||||
|
if BUILD_XINE_MODULE
|
||||||
|
emotion_decoder_xine_la_SOURCES = \
|
||||||
emotion_xine.c \
|
emotion_xine.c \
|
||||||
emotion_xine.h
|
emotion_xine.h
|
||||||
emotion_decoder_xine_la_LIBADD = @EVAS_LIBS@ @ECORE_LIBS@ @XINE_LIBS@
|
emotion_decoder_xine_la_LIBADD = @EVAS_LIBS@ @ECORE_LIBS@ @XINE_LIBS@
|
||||||
emotion_decoder_xine_la_LDFLAGS = -module -avoid-version \
|
emotion_decoder_xine_la_LDFLAGS = -module -avoid-version \
|
||||||
-L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs
|
-L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs
|
||||||
emotion_decoder_xine_la_DEPENDENCIES = $(top_builddir)/config.h
|
emotion_decoder_xine_la_DEPENDENCIES = $(top_builddir)/config.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if BUILD_GSTREAMER_MODULE
|
||||||
|
emotion_decoder_gstreamer_la_SOURCES = \
|
||||||
|
emotion_gstreamer.c \
|
||||||
|
emotion_gstreamer.h
|
||||||
|
emotion_decoder_gstreamer_la_LIBADD = @EVAS_LIBS@ @ECORE_LIBS@ @GST_LIBS@
|
||||||
|
emotion_decoder_gstreamer_la_LDFLAGS = -module -avoid-version \
|
||||||
|
-L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs
|
||||||
|
emotion_decoder_gstreamer_la_DEPENDENCIES = $(top_builddir)/config.h
|
||||||
|
endif
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,76 @@
|
||||||
|
#ifndef __EMOTION_GSTREAMER_H__
|
||||||
|
#define __EMOTION_GSTREAMER_H__
|
||||||
|
|
||||||
|
#include <Ecore_Data.h>
|
||||||
|
|
||||||
|
#include <gst/gst.h>
|
||||||
|
|
||||||
|
typedef struct _Emotion_Video_Sink Emotion_Video_Sink;
|
||||||
|
|
||||||
|
struct _Emotion_Video_Sink
|
||||||
|
{
|
||||||
|
GstElement *sink;
|
||||||
|
unsigned long long length_time;
|
||||||
|
unsigned long long length_frames;
|
||||||
|
unsigned int width;
|
||||||
|
unsigned int height;
|
||||||
|
unsigned int par_num;
|
||||||
|
unsigned int par_den;
|
||||||
|
double framerate;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct _Emotion_Audio_Sink Emotion_Audio_Sink;
|
||||||
|
|
||||||
|
struct _Emotion_Audio_Sink
|
||||||
|
{
|
||||||
|
GstElement *sink;
|
||||||
|
unsigned long long length_time;
|
||||||
|
unsigned long long length_samples;
|
||||||
|
unsigned int channels;
|
||||||
|
unsigned int samplerate;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct _Emotion_Gstreamer_Video Emotion_Gstreamer_Video;
|
||||||
|
|
||||||
|
struct _Emotion_Gstreamer_Video
|
||||||
|
{
|
||||||
|
/* Gstreamer elements */
|
||||||
|
GstElement *pipeline;
|
||||||
|
|
||||||
|
/* Sinks */
|
||||||
|
Ecore_List *video_sinks;
|
||||||
|
Ecore_List *audio_sinks;
|
||||||
|
|
||||||
|
/* Evas object */
|
||||||
|
Evas_Object *obj;
|
||||||
|
unsigned char *obj_data;
|
||||||
|
|
||||||
|
/* Characteristics */
|
||||||
|
int position;
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
double ratio;
|
||||||
|
|
||||||
|
volatile int seek_to;
|
||||||
|
volatile int get_poslen;
|
||||||
|
volatile double seek_to_pos;
|
||||||
|
|
||||||
|
int fd_ev_read;
|
||||||
|
int fd_ev_write;
|
||||||
|
Ecore_Fd_Handler *fd_ev_handler;
|
||||||
|
|
||||||
|
|
||||||
|
unsigned char play : 1;
|
||||||
|
unsigned char video_mute : 1;
|
||||||
|
unsigned char audio_mute : 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
unsigned char module_open (Evas_Object *obj,
|
||||||
|
Emotion_Video_Module **module,
|
||||||
|
void **video);
|
||||||
|
|
||||||
|
void module_close (Emotion_Video_Module *module,
|
||||||
|
void *video);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __EMOTION_GSTREAMER_H__ */
|
Loading…
Reference in New Issue