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