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)


  - 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 <berry...@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 <swpal...@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 <berry...@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,




Reply via email to