#include <jni.h>
#include <stdint.h>

extern "C" {

bool secureline_voice_is_enabled();
void secureline_voice_process_int16(
        int16_t* buffer,
        int frames,
        int channels,
        int sampleRate,
        bool speakerRoute);

JNIEXPORT void JNICALL
Java_com_secureline_server_LemenzoNativeCallTxController_nativeProcess(
        JNIEnv* env,
        jclass,
        jshortArray array,
        jint frames,
        jint sampleRate) {
    if (env == nullptr || array == nullptr || frames <= 0 || sampleRate <= 0) return;

    const jsize length = env->GetArrayLength(array);
    if (length <= 0) return;
    if (frames > length) frames = length;

    jshort* data = env->GetShortArrayElements(array, nullptr);
    if (data == nullptr) return;

    if (secureline_voice_is_enabled()) {
        secureline_voice_process_int16(
                reinterpret_cast<int16_t*>(data),
                frames,
                1,
                sampleRate,
                false /* Pixel/AoC owns earpiece/speaker/AEC route */);
    }

    env->ReleaseShortArrayElements(array, data, 0);
}

} // extern "C"
