Adding GStreamer plugins

Stephen F Northover steve.x.northover at oracle.com
Tue Mar 25 17:01:41 UTC 2014


On 2014-03-25 7:00 AM, Kirill Kirichenko wrote:
> Hi Michael.
> See my comments inline.
>
> On 24.03.2014 04:31, Michael Berry wrote:
>> 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.
> We did some changes in existing GStreamer code because it had errors 
> and because we needed to expand some functionality. The changes are 
> not very extensive.
>
>> 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!
> I can give you some directions. There is no wiki. I'd appreciate if 
> you created one.
>
>>   - 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 don't need to comment/uncomment anything. Just add 
> -PCOMPILE_MEDIA=true to the gradle command line. You can however 
> change the properties file too.
>
>>   - 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.
> You need windows 7.1a SDK and speaking precisely you need only samples 
> from it because samples have BaseClasses at 
> Samples/multimedia/directshow/baseclasses. BaseClasses are used for 
> Oracle direchshowwrapper plugin.
>
>>   - 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?
> What are you gonna use it for ?
I updated the page and got rid of the BINARY_STUB reference that is no 
longer needed.
>
>> 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!
> Steve. Can you give an advice ?
If you are looking to contribute (when you get to a good place), the 
process is well known and is followed by the everyone.

     https://wiki.openjdk.java.net/display/OpenJFX/Code+Reviews
>
>> 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?

Only committers can edit the wiki right now.  It is possible to become 
an Author and write to the wiki, but I would be happy to publish your 
recipe when you are happy with it.

> It does.
>
>
>>>> On Mar 22, 2014, at 9:26 PM, Michael Berry <berry120 at gmail.com> wrote:
>>>>> However, I'm not sure if I'm going about including the matroska 
>>>>> plugin
>>>> in
>>>>> 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
>>>>>
>>>> modules/media/src/main/native/gstreamer/gstreamer-lite/gst-plugins-good/gst/ 
>>>>
>>>>> folder (I'm unsure of this - should I add it to both these folders?).
> Well you see. If you download the latest matroska plugin it 
> potentially can have dependencies on the latest GStreamer platform. We 
> don't have/use the latest gstreamer. The version we use is 0.10.35. 
> And the latest available is 1.x. They are incompatible in some methods.
>
>>>>> - 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
> There is one more thing you need to do here for Windows only apart 
> from running gradle with -PCOMPILE_MEDIA=true. Windows build system 
> has files that export symbols
> 1) from glib-lite.dll 
> ${jfxroot}/rt/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/build/win32/vs100/{glib-lite.def|glib-liteD.def} 
>
> Here the version with "D" is used for debug build and may contain more 
> symbols for export.
> 2) from gstreamer-lite.dll 
> ${jfxroot}/rt/modules/media/src/main/native/gstreamer/projects/win/gstreamer-lite.def 
> - used for both Release and Debug.
>
> If your plugin uses some methods of gstreamer/glib libraries not 
> mentioned in the files you should add the methods to the files. Syntax 
> is pretty simple. If you don't add depending methods to these files 
> you will get linker errors. C/C++ compiler will not generate errors.
>
> Actually I think the best way to start developing/improving the Media 
> component is to upgrade GStreamer to 1.x from 0.10.35. It would be a 
> very good starting point and you would get less or no problems using 
> the latest available plugins. If someone wanna take over this I can 
> explain in details how to do it.
>
> K



More information about the openjfx-dev mailing list