Adding GStreamer plugins

anton nashatyrev anton.nashatyrev at oracle.com
Mon Mar 24 14:55:58 UTC 2014


Hi Michael,

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)

Regards,
Anton.

>   - 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 (
> http://stackoverflow.com/questions/4102259/directx-sdk-june-2010-installation-problems-error-code-s1023),
> 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,
>
> Michael
>
>
>
>
> 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.
>>
>> Thanks,
>>
>> Michael
>>
>>
>> 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.
>>> https://javafx-jira.kenai.com/browse/RT-2684
>>>
>>> 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.
>>>
>>> Scott
>>>
>>>
>>> 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
>>> other
>>>> media formats. As a first port of call I'm attempting to see if I can
>>> get
>>>> the framework accepting the Matroska plugin, but seem to be coming a bit
>>>> unstuck on the native side of things (including the plugin with
>>> GStreamer.)
>>>> I've made the relevant modifications on the Java side of things to
>>> persuade
>>>> the platform to accept MKV files and pass them down to the GStreamer
>>> layer,
>>>> and that compiles and runs without any issues.
>>>>
>>>> However, I'm not sure if I'm going about including the matroska plugin
>>> in
>>>> 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
>>>>
>>> modules/media/src/main/native/gstreamer/gstreamer-lite/gst-plugins-good/gst/
>>>> 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
>>>> gstplugins-lite.c
>>>>
>>>> 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
>>> be
>>>> much more complicated than I'm assuming it should be. I'm not even sure
>>> if
>>>> the default "gradle sdk" task is actually reflecting the changes I've
>>> made
>>>> - certainly gstreamer-lite.dll seems to be exactly the same size as
>>> before,
>>>> though I'm unsure if the additional plugin is meant to be embedded in
>>> this
>>>> 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
>>> someone
>>>> be kind enough to give me a bit of a nudge in the right direction?
>>>>
>>>> Many thanks,
>>>>
>>>> Michael
>>>
>>
>> --
>> Thanks,
>>
>> Michael
>>
>
>



More information about the openjfx-dev mailing list