From 8e7dbef340a69ff59c458d6ab429f5dc25b3ab12 Mon Sep 17 00:00:00 2001 From: Idan Sheinberg Date: Thu, 23 Nov 2023 23:33:43 +0200 Subject: [PATCH] DLL renaming --- .../org/sheinbergon/aac/jna/FdkAACLib.java | 3 ++ .../sheinbergon/aac/jna/FdkAACLibFacade.java | 10 +++++ .../aac/jna/structure/LibInfo.java | 40 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 src/main/java/org/sheinbergon/aac/jna/structure/LibInfo.java diff --git a/src/main/java/org/sheinbergon/aac/jna/FdkAACLib.java b/src/main/java/org/sheinbergon/aac/jna/FdkAACLib.java index c8055df..24359eb 100644 --- a/src/main/java/org/sheinbergon/aac/jna/FdkAACLib.java +++ b/src/main/java/org/sheinbergon/aac/jna/FdkAACLib.java @@ -10,6 +10,7 @@ import org.sheinbergon.aac.jna.structure.AACEncInfo; import org.sheinbergon.aac.jna.structure.AACEncOutArgs; import org.sheinbergon.aac.jna.structure.AACEncoder; +import org.sheinbergon.aac.jna.structure.LibInfo; @SuppressWarnings("MethodName") public final class FdkAACLib { @@ -46,6 +47,8 @@ static native int aacEncEncode( static native int aacEncInfo(AACEncoder hAacEncoder, AACEncInfo pInfo); + static native int aacEncGetLibInfo(LibInfo info); + static native int aacEncoder_SetParam(AACEncoder encoder, int param, int value); private FdkAACLib() { diff --git a/src/main/java/org/sheinbergon/aac/jna/FdkAACLibFacade.java b/src/main/java/org/sheinbergon/aac/jna/FdkAACLibFacade.java index c40cec9..48403eb 100644 --- a/src/main/java/org/sheinbergon/aac/jna/FdkAACLibFacade.java +++ b/src/main/java/org/sheinbergon/aac/jna/FdkAACLibFacade.java @@ -3,12 +3,14 @@ import com.sun.jna.Memory; import com.sun.jna.ptr.IntByReference; import com.sun.jna.ptr.PointerByReference; +import lombok.extern.java.Log; import org.sheinbergon.aac.encoder.util.WAVAudioSupport; import org.sheinbergon.aac.jna.structure.AACEncBufDesc; import org.sheinbergon.aac.jna.structure.AACEncInArgs; import org.sheinbergon.aac.jna.structure.AACEncInfo; import org.sheinbergon.aac.jna.structure.AACEncOutArgs; import org.sheinbergon.aac.jna.structure.AACEncoder; +import org.sheinbergon.aac.jna.structure.LibInfo; import org.sheinbergon.aac.jna.util.AACEncError; import org.sheinbergon.aac.jna.util.AACEncParam; import org.sheinbergon.aac.jna.util.FdkAACLibException; @@ -17,8 +19,16 @@ import javax.annotation.Nonnull; import java.util.Optional; +@Log public final class FdkAACLibFacade { + static { + LibInfo info = new LibInfo(); + FdkAACLib.aacEncGetLibInfo(info); + info.read(); + log.info(String.format("=== FDK-AAC Library reported version - %s ===", new String(info.versionStr))); + } + private static final int IN_BUFFER_COUNT = 1; private static final int IN_BUFFER_IDENTIFIER = 0; private static final int IN_BUFFER_ELEMENT_SIZE = 2; diff --git a/src/main/java/org/sheinbergon/aac/jna/structure/LibInfo.java b/src/main/java/org/sheinbergon/aac/jna/structure/LibInfo.java new file mode 100644 index 0000000..270d4be --- /dev/null +++ b/src/main/java/org/sheinbergon/aac/jna/structure/LibInfo.java @@ -0,0 +1,40 @@ +package org.sheinbergon.aac.jna.structure; + +import com.sun.jna.Structure; +import org.sheinbergon.aac.jna.util.JNASupport; + +import java.util.List; + +/** + * Maps to LIB_INFO struct. + * + * @see fdk-aac/libSYS/include/FDK_audio.h + */ +@SuppressWarnings({"JavadocVariable", "VisibilityModifier", "MemberName"}) +public final class LibInfo extends Structure { + + private static final int VERSION_STRING_SIZE = 32; + + private static final List FIELD_ORDER = JNASupport.structureFieldOrder(LibInfo.class); + + /** + * Library Info mapping. + */ + public LibInfo() { + setAlignType(Structure.ALIGN_NONE); // Make sure field size alignments are as expected + read(); // Read once after initialize from provided pointer + } + + public String title; + public String build_date; + public String build_time; + public int module_id; + public int version; + public int flags; + public byte[] versionStr = new byte[VERSION_STRING_SIZE]; + + @Override + protected List getFieldOrder() { + return FIELD_ORDER; + } +}