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