Adding GStreamer plugins
berry120 at gmail.com
Mon Mar 24 00:31:14 UTC 2014
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.)
- 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 (
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?
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
>> > 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
>> > 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,
>> > Michael
More information about the openjfx-dev