# libonebaudio.so: puente JNI (onebaudio.c) enlazado DINÁMICAMENTE con FFmpeg (tools/build-ffmpeg-android.sh, # LGPL 2.1+): libavformat/libavcodec/libswresample/libavutil.so van como bibliotecas aparte en la APK, así cualquiera # puede sustituirlas por otra compilación de FFmpeg (B1b, cumplimiento de la LGPL sin depender de la oferta escrita). # FFMPEG_ROOT lo pasa Gradle (androidApp/build.gradle.kts) = la caché -/ del script. cmake_minimum_required(VERSION 3.22) project(onebaudio C) if(NOT FFMPEG_ROOT) message(FATAL_ERROR "FFMPEG_ROOT sin definir (lo pasa Gradle; ver tools/build-ffmpeg-android.sh)") endif() set(FF ${FFMPEG_ROOT}/${ANDROID_ABI}) # Bibliotecas importadas: AGP las empaqueta en lib// junto a libonebaudio.so. foreach(lib avformat avcodec swresample avutil) add_library(${lib} SHARED IMPORTED) set_target_properties(${lib} PROPERTIES IMPORTED_LOCATION ${FF}/lib/lib${lib}.so) endforeach() add_library(onebaudio SHARED onebaudio.c) target_include_directories(onebaudio PRIVATE ${FF}/include) target_compile_options(onebaudio PRIVATE -Os -fvisibility=hidden -ffunction-sections -fdata-sections -Wall) target_link_libraries(onebaudio PRIVATE avformat avcodec swresample avutil log m) target_link_options(onebaudio PRIVATE -Wl,--gc-sections -Wl,-z,max-page-size=16384 -s)