Bind libopus through java.lang.foreign downcall handles instead of JNA: the ctl functions are linked with firstVariadicArg(2), and the encoder and decoder each own a shared Arena holding the handle plus reusable native PCM/packet buffers, so the hot path only allocates the returned packet. The library is resolved by system SONAME first, falling back to a bundled copy extracted from the JAR. Only the Windows x86-64 build is packaged by default now (-Dnatives.all restores all platforms), since every other platform ships libopus through its package manager. Requires Java 26. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
66 lines
2.2 KiB
XML
66 lines
2.2 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
<parent>
|
|
<groupId>com.ts3client</groupId>
|
|
<artifactId>ts3-client-parent</artifactId>
|
|
<version>0.1.0</version>
|
|
</parent>
|
|
|
|
<artifactId>ts3-client-desktop</artifactId>
|
|
<name>TS3J Client Desktop Audio</name>
|
|
<description>Desktop audio backend: Java Sound capture/playback and native Opus via the FFM API</description>
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>com.ts3client</groupId>
|
|
<artifactId>ts3-client-core</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.github.manevolent</groupId>
|
|
<artifactId>ts3j</artifactId>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<build>
|
|
<!--
|
|
Only the Windows x86-64 Opus build is packaged by default: every other
|
|
supported platform ships libopus through its package manager (or, on
|
|
macOS, Homebrew), and the FFM binding loads the system library first.
|
|
Build with -Dnatives.all to bundle the copies for all platforms.
|
|
-->
|
|
<resources>
|
|
<resource>
|
|
<directory>src/main/resources</directory>
|
|
<excludes>
|
|
<exclude>darwin/**</exclude>
|
|
<exclude>darwin-*/**</exclude>
|
|
<exclude>linux-*/**</exclude>
|
|
<exclude>win32-x86/**</exclude>
|
|
</excludes>
|
|
</resource>
|
|
</resources>
|
|
</build>
|
|
|
|
<profiles>
|
|
<profile>
|
|
<id>all-natives</id>
|
|
<activation>
|
|
<property>
|
|
<name>natives.all</name>
|
|
</property>
|
|
</activation>
|
|
<build>
|
|
<resources>
|
|
<resource>
|
|
<directory>src/main/resources</directory>
|
|
</resource>
|
|
</resources>
|
|
</build>
|
|
</profile>
|
|
</profiles>
|
|
</project>
|