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 fixes a pending XXX where we didnt keep the buffer mapped as long
as the evas image object pointed to the video pixel data. this fixes
this along with less over-zealous refinf to make things more obvious
(now last_buffer actualyl really matters and if it was mapped and
refed).
@fix
this fixes gst and gst1 modules to leave volume be on start. generic
can't really query easily, so just set to 0.8 by default, and xine is
already just fine. do this because back-ends seems to have a habit of
setting master volume, not per-app volume.
@fix
We are already using the pointer before we check it here. We also don't
check it in the other callbacks so align the handling in this file.
CID: 1039635, 1039636, 1039637, 1039638, 1039639
this makes efl ignore certain env vars for thnigs and entirely removes
user modules (that no one ever used) etc. etc. to ensure that *IF* an
app is setuid, there isn't a priv escalation path that is easy.
Next step: state handling in the GStreamer backend
Reviewers: cedric
CC: cedric
Differential Revision: https://phab.enlightenment.org/D431
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
At least on the gstreamer1 version in Fedora 19 this include is needed. Glima
reported it as well and I think he also uses Fedora.
modules/emotion/gstreamer1/emotion_gstreamer.c:643:4: error: unknown type name
'GstNavigationCommand'
Even if other distros or gstreamer1 versions do not need this it should be safe
to add it here.
This code was disabled and did not work properly. If this should be
re-added it will have to be rewritten anyway and currently it only
clutters the existing code.
Reviewers: cedric
CC: cedric
Differential Revision: https://phab.enlightenment.org/D414
Signed-off-by: Cedric BAIL <cedric.bail@samsung.com>
Being annoyed by different types of eina critical macros - CRI, CRIT,
CRITICAL -, I concluded to unify them to one. Discussed on IRC and
finally, CRI was chosen to meet the consistency with other macros -
ERR, WRN, INF, DBG - in terms of the number of characters.
If there is any missing bits, please let me know.
Some commits to port emotion to GStreamer 1.0 and implement some missing features,
clean up code a bit and fix some bugs on the way.
This works as good as the 0.10 code for me now with the emotion examples,
just the Samsung hardware specific code is commented out. This should be
ported by someone who has such hardware, and also in a clean way now that
GStreamer since 1.0 has features to handle all this properly.
There's still a lot of potential to clean things up and fix many bugs, and also
to implement zerocopy rendering. But those are for later if there's actual
interest in this at all.
Commits:
- Update configure checks and ecore example to GStreamer 1.0
- Initial port of emotion to GStreamer 1.0
- Samsung specific code commented out, should be ported by someone
with the hardware.
- Return GST_FLOW_FLUSHING when the sink is unlocked
- Remove unused GSignal from the sink
- Use GstVideoInfo to store the format details inside the sink
- Add support for pixel-aspect-ratio
- Store video format information in GstVideoInfo for the different video streams
- Use GstAudioInfo to store the audio format information
- Remove some unused defines
- Header cleanup
- Implement initial support for GstNavigation interface
- Implement setting of audio/video channel
Reviewers: cedric
CC: cedric
Differential Revision: https://phab.enlightenment.org/D387
Signed-off-by: Cedric BAIL <cedric.bail@samsung.com>
- create permissions as 0700, this should be private to the running user.
- do shm_unlink() on error, prevents resource leaks;
- apply close() on error, prevents resource leaks;
- handle strerror() properly.
- shm name uses process id, object name and ecore's time, should be
cleaner and avoid possible clashes
- ecore_exe do not need to read from slave stdout/err, this removing
the flags allows messages to come visible at terminal.
- fix typo, it's slave not slayer... :-D
- errno: you can't use errno to report error from failed mmap() if
you do another call that sets errno after that, in that case
fprintf(). So have a single print so we can use the errno value of
the proper call.
- although the slave generic player is not that important if it leaks
its single shmfd, let's be pedantic and close it. Manpage says it
is safe to close filedescriptor after mmap() worked.
this fixes CID 1039884 which isn't a real problem as the callback del
never dereferences the data pointer - just uses it as a value, but
this is really to ensure that it doesn't come back if the code were to
change.
It might be that our engine list is empty and thus our engine might still
be set to NULL. Better check and return if this is the case instead of
dereferencing NULL.
The suported atom gets allocated in the ecore_x call but we leave
the scope here without freeing the resource again. Free it when
going out of scope.
SVN revision: 83790
fixed to be byte array instead of void pointer, did this based on the
code of convert... but what I found very strange is that math is "*
32"... really? Shouldn't it be "* 4"?
SVN revision: 82733
Change the module infra and allow one to register using the
description structure itself, saves some work.
Replace module_open and module_close with add() and del(), that are
more descriptive.
Move stuff to init/shutdown where it was a better fit.
Since add() now receives the first parameter being the owning
structure we can create one structure per generic player and they will
merge transparently with other modules, then we can use a simple
algorithm that considers the plugin priority. ALL DYNAMIC!
Future work could be done to load the plugin priority specified by
user from configuration file. But this is not in my plans right now.
SVN revision: 82602
we were using "" for locale that made eina_prefix think that we did
not had a common prefix.
take the time and add a magic file "checkme" to be checked at runtime
to validate stuff.
also made the binaries be searched in MODULE_ARCH namespace.
SVN revision: 82507
this one was quite a huge work, but hopefully it's correct.
NOTES:
* removed vlc generic module, it should go into a separate package.
* gstreamer is enabled by default (see --disable-gstreamer)
* xine is disabled by default (see --enable-gstreamer)
* generic is always built statically if supported
* gstreamer and xine can't be configured as static (just lacks command line options, build system supports it)
* v4l2 is enabled by default on linux if eeze is built (see --disable-v4l2)
* emotion_test moved to src/tests/emotion and depends on EFL_ENABLE_TESTS (--with-tests), but is still installed if enabled.
TODO (need your help!):
* fix warnings with gstreamer and xine engine
* call engine shutdown functions if building as static
* remove direct usage of PACKAGE_*_DIR and use eina_prefix
* add eina_prefix checkme file as evas and others
* add support for $EFL_RUN_IN_TREE
* create separate package for emotion_generic_modules
* check docs hierarchy (doxygen is segv'in here)
SVN revision: 82501