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.