GSOC / VLC status & next steps ...
Michael Meeks
mejmeeks at gmail.com
Wed Aug 21 04:42:00 PDT 2013
Hi guys,
I just cherry-picked Minh's nice work to master; and it looks in
reasonably good shape. As such, it's prolly good to go through the last
few pieces we need to get sorted out before enabling it by default on
master. JB we'll need some help from you here I think.
1. we need to be sure of the API guarentees around libvlc
+ JB - what API guarentees do you have there ?
+ we currently hard-code your ABI in the wrapper
we use to make this a very lite dependency
+ cf. eg.
http://cgit.freedesktop.org/libreoffice/core/tree/avmedia/source/vlc/wrapper/Player.cxx#n21
1.1 - we need to have a strong versioning scheme we can use to
detect ABI change, particularly on Windows where there is
no .so version bumping, and the majority of users.
+ using and parsing this seems a bit risky:
/**
* Retrieve libvlc version.
*
* Example: "1.1.0-git The Luggage"
*
* \return a string containing the libvlc version
*/
LIBVLC_API const char * libvlc_get_version(void);
Would it be better to have an 'ABI version' that is
incremented as/when back-compatibility of your plugin API
changes ? [ that we could switch on ]
gtk+ has some:
GTKMAIN_C_VAR const guint gtk_major_version;
GTKMAIN_C_VAR const guint gtk_minor_version;
GTKMAIN_C_VAR const guint gtk_micro_version;
GTKMAIN_C_VAR const guint gtk_binary_age;
GTKMAIN_C_VAR const guint gtk_interface_age;
const gchar* gtk_check_version (guint required_major,
guint required_minor,
guint required_micro);
Though check_version thing is at least somewhat
unreadable, it's heart is in the right place; I suspect that
the global variables are less elegant a general solution.
So - IMHO we need a strong versioning concept before we can turn this
on by default.
2. we need a good way to locate VLC / libvlc by default on
Win / Mac / Linux
+ JB: I assume that there are default install paths
is there a registry key on Windows ? Mac (I assume)
has nothing but perhaps a normal install path, and
for Linux it's unclear we want to use a system /
distro packaged VLC since it's almost certainly
pre-broken.
+ thoughts on how to find a working VLC
appreciated.
3. warning free backend - just need to quiet the compiler
warnings
4. fix perf / caching issues in Manager more carefully
we should re-use the player object, but we need to understand
the semantics and rational for the empty URLs we get sent,
also we should only re-use the player if it has no associated
window (I guess?).
5. Add a configuration option to allow a user to specify where
the system VLC lives (in case we can't find it)
+ Tools->Options->'Paths' might be a good place:
+ cui/source/options/optpath.cxx
+ add a 'VLC install path' setting ?
+ if this string is empty (the default) - we should try
to auto-detect just dlopen the libs on Linux; and/or
use a registry key.
+ if it is some magic eg 'off' we should disable VLC
integration, important in case of un-caught ABI
issues.
6. Windows / Mac module loading code cf. 5. and 1.
7. Enable in builds & get wider testing ...
Otherwise - I'm pretty happy with the progress here Minh - thanks for
your work; I'd like to get this enabled and working before the end of
your GSOC.
All the best,
Michael.
--
michael.meeks at suse.com <><, Pseudo Engineer, itinerant idiot
More information about the LibreOffice
mailing list