Adding GStreamer plugins

Kirill Kirichenko kirill.kirichenko at oracle.com
Wed Mar 26 12:43:22 UTC 2014


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