Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


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@suse.com  <><, Pseudo Engineer, itinerant idiot


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.