[graalvm-users] Creating maven artifacts for native libs
samuel.audet at gmail.com
Mon Nov 25 22:12:11 PST 2019
JavaCV doesn't have a video player per se. It's meant more for image
analysis and such than anything else. JavaFX is the one with a proper
video player: https://urldefense.proofpoint.com/v2/url?u=https-3A__openjfx.io_&d=DwICaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=CUkXBxBNT_D5N6HMJ5T9Z6rmvNKYsqupcbk72K0lcoQ&m=yRG8V4fiCasj5kylHRa6GtNPDSmCcXPmaToTQMqf1tQ&s=WNmOREu8Be0P21yYnmASAviyQ77RH1xrFeCiWlGMK9A&e=
Johan, does it support playback of HEVC media?
On 11/26/19 2:43 PM, Ramsey Gurley wrote:
> I think you may have saved me a lot of work :) I'll also check out
> javacv-platform, since I see you have a swing component to play video in
> that as well.
> Thank you!
> On 11/26/19 1:25 PM, Samuel Audet wrote:
>> In theory, Sulong can compile x265 to fully portable bytecode, and
>> these files can be packaged into Maven artifacts like any other Java
>> classes, but the performance that we would get from that may not be
>> satisfactory. It would probably be around 10x slower than native
>> binaries since Java bytecode isn't able to accommodate for native
>> assembly instructions that are used heavily in encoders such as x265.
>> Also, we may need dependencies on GraalVM, Truffle, and Sulong, so we
>> wouldn't get a small independent package that could run on the JDK,
>> but I'm not entirely sure about that. Those projects are still pretty
>> experimental, so that's probably why I'm not finding a friendly way to
>> try it out. :)
>> Because of these kinds of limitations, what everyone does, including
>> very official projects from OpenJDK like JavaFX, is simply to package
>> native libraries in JAR files and access them with JNI. It works fine
>> for multiple platforms as well. For example, I'm making packages for
>> FFmpeg (which include x265) available here:
>> There are binaries for Android (ARM, ARM64, x86, x86_64), Linux (ARM,
>> ARM64, POWER, x86, x86_64), Mac (x86_64), and Windows (x86 and
>> x86_64), all accessible from a single Maven artifact named
>> "ffmpeg-platform", but we can create builds easily for more platforms.
>> To get smaller JAR files, we can also limit the scope of the builds to
>> small libraries such as only x265 itself.
>> On 11/25/19 4:47 PM, Ramsey Gurley wrote:
>>> Hi all,
>>> I'd like to compile a native lib with graal to be distributed as a maven
>>> artifact. I have a few questions.
>>> Are native libraries platform specific if compiled with graalvm's llvm
>>> tools? Let's say I want to compile x265. Do I need one artifact per
>>> arch? Per os?
>>> Once created, can the graal compiler used by OpenJDK make use of them?
>>> Or is a graalvm with llvm tools installed a requirement?
>>> Basically, I want to fill a gap in Java, which is video codecs and a
>>> swing component to use them. I'm hoping graalvm is a good way to do
>>> Thank you,
More information about the GraalVM-Users