On Thu, 24 Mar 2011 10:15:46 +0000 Gustavo Sverzut Barbieri <[email protected]> wrote:
> On Thu, Mar 24, 2011 at 8:13 AM, Mike Blumenkrantz <[email protected]> wrote: > > On Thu, 24 Mar 2011 09:01:09 +0100 > > Cedric BAIL <[email protected]> wrote: > > > >> On Wed, Mar 23, 2011 at 11:54 PM, Enlightenment SVN > >> <[email protected]> wrote: > >> > Log: > >> > fix vlc module loading, disable slow vmem options, begin work on fast > >> > render output > >> > > >> > > >> > Author: discomfitor > >> > Date: 2011-03-23 15:54:45 -0700 (Wed, 23 Mar 2011) > >> > New Revision: 58049 > >> > Trac: http://trac.enlightenment.org/e/changeset/58049 > >> > > >> > Modified: > >> > trunk/emotion/src/modules/vlc/emotion_vlc.c > >> > > >> > Modified: trunk/emotion/src/modules/vlc/emotion_vlc.c > >> > =================================================================== > >> > --- trunk/emotion/src/modules/vlc/emotion_vlc.c 2011-03-23 22:48:26 UTC > >> > (rev 58048) +++ trunk/emotion/src/modules/vlc/emotion_vlc.c 2011-03-23 > >> > 22:54:45 UTC (rev 58049) @@ -3,8 +3,18 @@ > >> > * [email protected] > >> > */ > >> > > >> > +#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" > >> > @@ -116,15 +126,7 @@ > >> > { > >> > "-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, > >> > + "--ignore-config" > >> > }; > >> > vlc_argc = sizeof(vlc_argv) / sizeof(*vlc_argv); > >> > sprintf(ev->clock, "%lld", (long long int)(intptr_t)_em_lock); > >> > @@ -187,8 +189,13 @@ > >> > static unsigned char em_file_open(const char *file, Evas_Object *obj, > >> > void *ef) { > >> > Emotion_Vlc_Video *ev; > >> > - int i; > >> > - > >> > + 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; > >> > @@ -200,6 +207,39 @@ > >> > 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 > >> > + > >> > >> Maybe I misunderstande your code, but it sounds like you are trying to > >> directly render inside the X11 window. Wouldn't that interfere with > >> Evas rendering (aka it will mess your screen) ? Wouldn't it be a > >> better choice to use the native surface api of evas, that would > >> preserve the rendering path and be cleaner imo. > >> > >> > ev->vlc_evtmngr = libvlc_media_player_event_manager (ev->vlc_mp); > >> > > >> > for(i = EVENT_BEG_ID; i<EVENT_BEG_ID+NB_EVENTS; i++) { > >> > @@ -214,7 +254,7 @@ > >> > > >> > /* set properties to video object */ > >> > ev->just_loaded = 1; > >> > - > >> > + evas_render_method_list_free(methods); > >> > return 1; > >> > } > >> > > >> > @@ -414,7 +454,7 @@ > >> > ASSERT_EV(ev) return 0; > >> > ASSERT_EV_MP(ev) return 0; > >> > if (ev->opening || (!ev->play_ok)) return 0; > >> > - ret = vlc_media_player_is_seekable(ev->vlc_mp); > >> > + ret = libvlc_media_player_is_seekable(ev->vlc_mp); > >> > return ret; > >> > } > >> > > >> > > >> > > > yeah probably, I was in a rush so I just committed what I had since it's > > disabled and doesn't work anyway > > maybe you know this already, but xine is your best place to base this > vlc thing. I'd start one from scratch, working from a thread and using > a custom video output just like xine, so you get YUV buffers from VLC > then handle these to Evas that will do the conversion on GPU if > possible. > > yes, I was thinking that would be the case but wasn't sure :/ as I said, I will have no time to continue work on it for the next few weeks, but I will probably attempt to finish fixing it sometime soon since xine is dead now -- Mike Blumenkrantz Zentific: NULL pointer dereferences now 50% off! ------------------------------------------------------------------------------ Enable your software for Intel(R) Active Management Technology to meet the growing manageability and security demands of your customers. Businesses are taking advantage of Intel(R) vPro (TM) technology - will your software be a part of the solution? Download the Intel(R) Manageability Checker today! http://p.sf.net/sfu/intel-dev2devmar _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
