JDK-8199527 : Upgrade GStreamer to 1.14
  • Type: Bug
  • Component: javafx
  • Sub-Component: media
  • Affected Version: openjfx11
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2018-03-13
  • Updated: 2021-10-13
  • Resolved: 2018-06-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 Other
8u191Fixed openjfx11Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Description
we should wait for latest stable release 1.14 which should be released soon.
https://gstreamer.freedesktop.org/releases/1.14/


Comments
Not Verified separately, this is being verified through regular ATR tasks
07-08-2018

The .6 version looks good. Approved to push to 8u-dev for 8u192.
13-07-2018

http://cr.openjdk.java.net/~almatvee/8199527/webrev.8u.01/ http://cr.openjdk.java.net/~almatvee/8199527/rt.8u.6.patch.zip - I updated webrev at old location. Added copying glib-lite library on Linux platform to artifacts. Change only in build.gradle.
13-07-2018

1. Right, since it produce a .a file, linking isn't relevant. Thanks.
12-07-2018

1. I think not. libffi compiles into static library which as far as I know does not need any static linking with gcc or c++. libffi will link into glib after that. 2. Yes, it is latest.
12-07-2018

Two quick questions: 1. I don't see the static linking options in the Linux Makefile for libffi. Is this an oversight? 2. Can you confirm that the latest patch is: http://cr.openjdk.java.net/~almatvee/8199527/rt.8u.5.patch.zip ?
11-07-2018

http://cr.openjdk.java.net/~almatvee/8199527/webrev.8u.01 - Added building GLib on Linux for 8u backport.
09-07-2018

http://hg.openjdk.java.net/openjfx/jfx-dev/rt/rev/cc52395f2e3e
21-06-2018

Changes looks fine.. +1
21-06-2018

You should not see glib-2.42.1 after patch. Which patch you refer? It should be http://cr.openjdk.java.net/~almatvee/8199527/rt.2.patch.zip. webrev.02 is only partial changeset for review. Full patch is rt.2.patch.zip. I am using "patch -p 1 -i rt.2.patch" to apply it and it works fine.
19-06-2018

I see the file "msvc_recommended_pragmas.h" present for glib-2.42.1 and not for 2.56.1 /rt/modules/javafx.media/src/main/native/gstreamer/3rd_party/glib/glib-2.42.1/build/win32/vs100/msvc_recommended_pragmas.h
19-06-2018

I tried to compile the .02 patch (repo: jfx-dev) on windows 7, 64 bit with OpenJDK 10.0.1 and getting below errors. I guess im missing something here ? ../../../3rd_party/glib/glib-2.56.1/glib/gdatetime.c: fatal error C1083: Cannot open include file: 'msvc_recommended_pragmas.h': No such file or directory make[1]: *** [Makefile.glib:187: /cygdrive/d/jfx-temp/rt/modules/javafx.media/build/native/win/Release/obj/3rd_party/glib/glib-2.56.1/glib/gdatetime.obj] Error 2 ../../../3rd_party/glib/glib-2.56.1/glib/gdir.c: fatal error C1083: Cannot open include file: 'msvc_recommended_pragmas.h': No such file or directory ../../../3rd_party/glib/glib-2.56.1/glib/giochannel.c: fatal error C1083: Cannot open include file: 'msvc_recommended_pragmas.h': No such file or directory make[1]: Leaving directory '/cygdrive/d/jfx-temp/rt/modules/javafx.media/src/main/native/gstreamer/projects/win/glib-lite' make[1]: *** [Makefile.glib:187: /cygdrive/d/jfx-temp/rt/modules/javafx.media/build/native/win/Release/obj/3rd_party/glib/glib-2.56.1/glib/giochannel.obj] Error 2 make: *** [Makefile:64: /cygdrive/d/jfx-temp/rt/modules/javafx.media/build/native/win/Release/libglib-2.56.1.lib] Error 2 make: *** Waiting for unfinished jobs....
19-06-2018

The 8u backport will need more work to ensure that it can build and run on Oracle Linux 6 (which is what we use to build FX 8u for Linux platforms). Also, have you tested it on 32-bit Linux or Windows? These are supported configurations for JDK 8u.
15-06-2018

The .02 patch for 11 (jfx-dev mainline) looks good to me. +1, although please get a second reviewer.
15-06-2018

Updated webrev it includes changed for .md files and merged make files: http://cr.openjdk.java.net/~almatvee/8199527/webrev.02/
15-06-2018

For the mainline (jfx-dev) fix, I have tested the .02 patch on all three platforms and it looks good to me. I don't see a .02 webrev, however. Were you going to provide one?
15-06-2018

Updated patches with all issues address from 1-4. Also, removed non-printable character in GLib and GStreamer. http://cr.openjdk.java.net/~almatvee/8199527/rt.2.patch.zip http://cr.openjdk.java.net/~almatvee/8199527/rt.8u.1.patch.zip Note: I removed older zip archives with full patch, but if needed I can upload it again.
12-06-2018

I will run tests on all three platforms today, and also review the changes. A couple high-level comments: 1. Can you please upload a new patch that is rebased to the current tip of jfx-dev (there is one minor merge conflict that should be trivially skipped). 2. Please generate the patch with git diffs so it will track any renamed files or binary files (if any). 3. Need to modify the modules/javafx.media/src/main/legal/glib.md and modules/javafx.media/src/main/legal/gstreamer.md files to update the version number. 4. There are whitespace problems in the newly added gstreamer files. You can run the following to fix it if you like: bash ./tools/scripts/checkWhiteSpace -F -x NOTE: the above command will work on Linux, but seems to corrupt the file on Mac, so be aware of this if you choose to use that script.
12-06-2018

8u backport: http://cr.openjdk.java.net/~almatvee/8199527/webrev.8u.00/ http://cr.openjdk.java.net/~almatvee/8199527/rt.8u.0.patch.zip Basically it is identical to latest code base in jfx-dev, except it supports VP6/FLV, no libav stubs and FX layer uses impl_* internal methods to do rendering. Minor difference in make files like $(AR) -> $(LIB). Webrev only includes public APIs, doc changes and makefiles.
08-06-2018

I updated webrev.01 and rt1.patch.zip in place. Instead of GST_FLOW_ERROR we will return GST_FLOW_EOS, since qtdemux will break if error is return. This issue was found when testing AudioClip with some m4a files.
08-06-2018

http://cr.openjdk.java.net/~almatvee/8199527/webrev.01/ Webrev only contains javasource.c, so ignore this file in webrev.00. I found issue while working on 8u backport with FLV which can cause infinite loop introduced with JDK-8195803. See line 850-855 and line 810-811 for removed unused variable. SIGNAL_READ_BLOCK can return size = 0 and in this case while loop will enter infinite loop. Before JDK-8195803 we where returning GST_FLOW_ERROR if size is 0, so I fixed it in same way. Updated full patch: http://cr.openjdk.java.net/~almatvee/8199527/rt.1.patch.zip
07-06-2018

Please review the following: http://cr.openjdk.java.net/~almatvee/8199527/webrev.00/ Reviewers: kcr Upgraded GStreamer to 1.14. Note: Webrev contains only important changes for review. Full patch with all changes can be found below: http://cr.openjdk.java.net/~almatvee/8199527/rt.0.patch.zip
30-05-2018

1) modules/javafx.media/src/main/java/com/sun/media/jfxmediaimpl/NativeMediaPlayer.java - Added missing case for HALTED state, otherwise player may not go to HALTED if critical error occurs during initialization. 2) modules/javafx.media/src/main/native/gstreamer/gstreamer-lite/gst-plugins-good/gst/isomp4/qtdemux.c - Line: 8206 - Removed unnecessary caps update on pad. 3) modules/javafx.media/src/main/native/gstreamer/gstreamer-lite/gst-plugins-good/sys/directsound/gstdirectsoundsink.c - Some code we added was modified to work with directsoundsink updated code and some new code was disabled, since it is not needed. 4) modules/javafx.media/src/main/native/gstreamer/plugins/* - gst_element_class_set_details_simple() -> gst_element_class_set_metadata(). gst_element_class_set_details_simple() is old API from 0.X and with new code it does not compile anymore. - Added code to javasource and progressbuffer to keep sequence number of seek event when sending flush events for given seek event. This is needed as per GStreamer documentation starting with 1.X and without this fix gtdemux does not work correctly and sends events downstream out of order which breaks playback intermittently. Latest qtdemux depends on flush events from upstream to be with matching sequence number for seek event. - progress_buffer_activatepush_src() return FALSE, if pad is not linked during activation. Returning TRUE was considered by GStreamer that we activated and thus playback never starts. Not sure why previous GStreamer called us second time even if we returned TRUE. Latest one will call us again only if we returning FALSE initially. 5) modules/javafx.media/src/main/native/gstreamer/projects/* - Added -wd"4273" to disable C4273 warning for GStreamer. - Removed some code related to VP6. - Other changes are just added or removed files. 6) modules/javafx.media/src/main/native/jfxmedia/platform/gstreamer/GstAVPlaybackPipeline.cpp - Added check for NULL pointer. 7) modules/javafx.media/src/main/native/jfxmedia/platform/gstreamer/GstAudioPlaybackPipeline.cpp - Added check for NULL pointer. GST_MESSAGE_DURATION -> GST_MESSAGE_DURATION_CHANGED, since GST_MESSAGE_DURATION is deprecated and removed since 0.X. It was working since we had previous GStreamer compiled with some compatibility enabled between 0.X and 1.X.
30-05-2018

8u back port needs to be done in 8u-dev
16-04-2018

We also need to update GLib at the same time to 2.56.
13-04-2018