Adding GStreamer plugins
anton.nashatyrev at oracle.com
Mon Mar 24 14:55:58 UTC 2014
On 24.03.2014 4:31, Michael Berry wrote:
> Hi all,
> I'm now a bit further along with this, though struggling to get the
> matroska plugin to compile (getting a bunch of unresolved external symbol
> errors for functions it uses in glib - not entirely sure why at the moment,
> as I said C is not my strong point.) I've also noticed the plugins
> currently bundled have quite a few changes to the gstreamer version, and I
> can't quite work out the logic behind why things have been changed the way
> they have - so even after the compilation issue is resolved I'm now less
> confident that it will just drop in and work! Again, if someone
> knowledgeable in this area that's lurking in the shadows could shed any
> light on any of this, it would be hugely appreciated.
> However, putting the current problems aside for a bit, the snags I hit up
> until this point could I think be relatively easily addressed in the
> documentation. With that in mind could I suggest a few additional points
> for the wiki? These may be obvious to the majority reading here, but as
> someone completely new to building JFX they had me stumped for a while!
> - It turns out that the Gstreamer stuff doesn't compile at all by default,
> which is why I wasn't seeing any changes on the native level. To ensure
> GStreamer is actually compiled, you need to copy the
> gradle.properties.template file to gradle.properties, and uncomment the
> "#COMPILE_MEDIA = true" line. (A similar scenario would appear to exist for
> any webkit alterations as per the line above.)
You may just add -PCOMPILE_MEDIA=true as a gradle argument.
You may also want to add -PCONF=DebugNative to build debug version (in
case if you didn't find that option yet)
> - As well as the requirements listed, I needed the Windows SDK (
> http://www.microsoft.com/en-gb/download/details.aspx?id=8279) installed for
> GStreamer to compile successfully under Windows (7) - without it cygpath
> just threw a rather confusing error.
> - The DirectX SDK failed to install for me, Googling found the fix
> relatively easily (
> but perhaps this could be included just for reference.
> - The developer workflow page (
> https://wiki.openjdk.java.net/display/OpenJFX/Developer+Work+Flow) refers
> to "-Djavafx.ext.dirs" - I think this should be "-Djava.ext.dirs" instead?
> I'm happy to make the above changes myself but unsure of if / where you can
> sign up for an account, so I'm just throwing them here for now - if anyone
> could point me to the right place then that'd be great!
> If I do ever manage to get this working (ha-ha) I'd also like to throw up a
> wiki page just detailing how to grab a gstreamer plugin and make the
> necessary changes to it to compile it into openjfx as a stop gap to then
> perhaps working on one or both of the above JIRA issues and seeing where I
> get - does this sound reasonable?
> Many thanks,
> On 23 March 2014 15:32, Michael Berry <berry120 at gmail.com> wrote:
>> Hi Scott,
>> Sure, that's in fact my eventual goal - but in order to successfully get
>> that far I need to work out how to compile OpenJFX with other GStreamer
>> plugins first, and unfortunately at the moment I seem to be getting stuck
>> at that hurdle!
>> Time permitting, I do indeed plan to look at addressing 2684 if I can get
>> that far.
>> On 23 March 2014 14:03, Scott Palmer <swpalmer at gmail.com> wrote:
>>> I applaud your effort, but please consider while you are doing this:
>>> Addressing RT-18009 is good
>>> Addressing RT-2684 is way better.
>>> If there is a mechanism to write a stub plugin that hooks into the
>>> GStreamer plugin mechanism such that end users of JavaFX can write a module
>>> (in Java, with the option of using JNI) that supplies the uncompressed
>>> frames via a NativeByteBuffer, that would be a great start.
>>> On Mar 22, 2014, at 9:26 PM, Michael Berry <berry120 at gmail.com> wrote:
>>>> Hi all,
>>>> I've managed to clone and build OpenJFX successfully, and am now in the
>>>> process of trying to see how feasible it would be to add support for
>>>> media formats. As a first port of call I'm attempting to see if I can
>>>> the framework accepting the Matroska plugin, but seem to be coming a bit
>>>> unstuck on the native side of things (including the plugin with
>>>> I've made the relevant modifications on the Java side of things to
>>>> the platform to accept MKV files and pass them down to the GStreamer
>>>> and that compiles and runs without any issues.
>>>> However, I'm not sure if I'm going about including the matroska plugin
>>>> the right way - I've currently done the following:
>>>> - Downloaded the latest version of the plugins from here (
>>>> http://gstreamer.freedesktop.org/src/gst-plugins-good/), then added the
>>>> matroska one to the modules/media/src/main/native/gstreamer/plugins/
>>>> folder, as well as the
>>>> folder (I'm unsure of this - should I add it to both these folders?).
>>>> - Added all the C files from the first folder mentioned above to the
>>>> plugins.vcxproj file
>>>> - Added the relevant files and directory to Makefile.gstplugins
>>>> - Called the additional relevant plugin_init() function in
>>>> However, after the above I still get the same result having touched
>>> none of
>>>> the native code, that being that GSTMediaPlayer throws a MediaException
>>>> with flag 257, which seems to mean it couldn't create the required media
>>>> from the given location.
>>>> So at this point I'm a bit stuck really - of course, the whole task may
>>>> much more complicated than I'm assuming it should be. I'm not even sure
>>>> the default "gradle sdk" task is actually reflecting the changes I've
>>>> - certainly gstreamer-lite.dll seems to be exactly the same size as
>>>> though I'm unsure if the additional plugin is meant to be embedded in
>>>> file or not. I'm experienced with Java but much less so with C++, and
>>>> completely new to gradle (as of yesterday.)
>>>> Is there anything obvious I'm not doing correctly, and if so would
>>>> be kind enough to give me a bit of a nudge in the right direction?
>>>> Many thanks,
More information about the openjfx-dev