Adding GStreamer plugins

Michael Berry mjrb5 at
Wed Mar 26 23:53:28 UTC 2014

Unfortunately I seem to have become a bit stuck at step one! I'm probably
missing a few things that are rather obvious, but haven't really got much
experience at all in this area, so am relying on haphazard Googling and a
bit of guesswork! It may well be that updating the framework is a bit
beyond my skillset for the time I have available at the moment, but I'll
keep pushing on if anyone's willing to give me a bit of guidance on it.

Firstly libffi - I've downloaded that, put it in the 3rd_party folder, and
have run "./configure", "make", then "make install" (all under cygwin.)
That seems fine; so I've now got "libffi.a" (as well as "cygffi-6.dll") in

I've then grabbed glib 2.40, placed that in the glib folder, and attempted
the same process - this first complained about a lack of libiconv, so I
grabbed that and set the appropriate flags to point to it, and now I get
the following:

*configure: error: in
*configure: error: The pkg-config script could not be found or is too old.
 Make sure it is in your PATH or set the PKG_CONFIG environment variable to
the full path to pkg-config.*

*Alternatively, you may set the environment variables LIBFFI_CFLAGS and
LIBFFI_LIBS to avoid the need to call pkg-config.*

I'm assuming this is something to do with the fact it can't find libffi,
but I'm unaware of how to tell it that libffi is in the given folder! I'm
also assuming that calling config / make etc. manually is the way to go for
the time being - I think I'd be at even more of a loss trying to integrate
it into the gradle build script.



On 26 March 2014 12:43, Kirill Kirichenko <kirill.kirichenko at>wrote:

> Michael,
> On 26.03.2014 04:11, Michael Berry wrote:
>> Kirill - I think I'll take your suggestion next and start looking at
>> upgrading the existing native components to the latest version of
>> GStreamer
>> before I look at adding any more plugins, that would seem to make sense.
>> Have you any pointers in how best to approach this?
> No pointer at all. I have it my my head. And it's about time to pass this
> experience before I forget it =)
> The thing is I did it once and it took me ~ 2 months.
> Here is the brief plan that you need to keep:
> [1] Start with the lower lever. It's glib. Linux doesn't need any glib
> update - we use the system glib. So glib update is necessary for Win/Mac.
> [1.1] Latest glib has plenty of dependencies on other 3-rd party
> libraries. But there is one that's mandatory - libFFI. Fortunately Oracle
> has approval to use libFFI in it's products. But this probably isn't
> necessary for OpenJFX. So at you first step you need to bring libFFI
> sources, place them in rt/modules/media/src/main/
> native/gstreamer/3rd_party/libffi and make sure it builds on Windows and
> Mac producing lib/a for static linking. You can probably make dll/dylib
> instead but I don't think it's necessary.
> [1.2] Take the latest glib 2.38 or even 2.40. Place them in
> rt/modules/media/src/main/native/gstreamer/3rd_party/glib
> Note that you don't need all sources/headers. But to remove precisely
> what's redundant you should first compile gstreamer/plugins.
> Here you make sure you can compile and build glib-lite.dll/libglib-lite.
> dylib
> Having done 1.2 you should be able to run media component with the new
> glib-lite.dll. If it runs then you're done with glib upgrade.
> It's important to apply fixes that we made in glib to the newer glib
> library. You can find them by grepping for GSTREAMER_LITE in
> sources/headers.
> [2] GStreamer update.
> [3] Oracle plugins compilation/update. This step will also be necessary
> because 0.10.35 API is different from 1.0. For Example GstBuffer that we
> extensively use has incompatible APIs.
> I won't get deeper into details for [2] and [3] now. Let's just handle [1]
> and then continue.

More information about the openjfx-dev mailing list