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 ?
On Mar 22, 2014, at 9:26 PM, Michael Berry <berry...@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