Files
2026-08-24 10:03:24 +08:00

403 lines
12 KiB
CMake

cmake_minimum_required(VERSION 3.8)
project(aml_audio_hal
VERSION 2.0)
include(GNUInstallDirs)
if (DEFINED AML_BUILD_DIR)
message("AML_BUILD_DIR is defined.")
else()
message("AML_BUILD_DIR is not defined, set default.")
set(AML_BUILD_DIR "./audio_hal")
endif()
execute_process(COMMAND sh version_config.sh ${AML_BUILD_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
option(DISABLE_SERVER "rm audio server" OFF)
option(USE_DTV "Compile with DTV option" OFF)
option(NO_USE_CAP "Don't support audio capture" OFF)
option(USE_SC2 "Current platform is sc2" OFF)
option(NO_USE_CAP_MUTE_HDMI "Don't support audio capture mute for HDMI INPUT" OFF)
option(USE_APP_MIXING "Support appsound mixing" ON)
option(USE_DIAG_LOG "Support diagnostic logging for RDK" OFF)
option(USE_MEDIA_INFO "Support media info API reporting" OFF)
option(USE_MSYNC "Compile with MSYNC option" ON)
option(USE_DTS_VX4 "Use DTS VX4" ON)
option(ANDROID_BUILD "Build for android" OFF)
option(L_PROJECT "Build for L Project" OFF)
option(SUPPORT_EXTERNAL_OUTPUT "support external audio output" OFF)
if(ANDROID_BUILD)
add_definitions(-DANDROID_BUILD)
add_subdirectory("audio_client")
else()
#add_subdirectory("audio_codec/libvorbis")
add_subdirectory("audio_codec/libdts")
add_subdirectory("audio_codec/libdcv")
#add_subdirectory("audio_codec/libmpegh")
add_subdirectory("utils/test")
endif()
add_subdirectory("decoder/libms12")
add_definitions(-DMS12_V24_ENABLE)
#For DTS VX version selected
if(USE_DTS_VX4)
message("Use DTS VX4")
add_definitions(-DDTS_VX_V4_ENABLE)
endif()
if(DISABLE_SERVER)
add_definitions(-DNO_SERVER)
endif()
if(SUPPORT_EXTERNAL_OUTPUT)
add_definitions(-DSUPPORT_EXTERNAL_OUTPUT)
endif()
if(USE_DTV)
list(APPEND DTV_FILES input/dtv_patch.c)
list(APPEND DTV_FILES input/dtv_patch_utils.c)
list(APPEND DVB_AUDIO_INC ./dtv_audio_utils/dmxwrap/MultiHwDemux)
list(APPEND DTV_FILES dtv_audio_utils/dmxwrap/AmDemuxWrapper.cpp)
list(APPEND DTV_FILES dtv_audio_utils/dmxwrap/MultiHwDemux/AmHwMultiDemuxWrapper.cpp)
list(APPEND DTV_FILES dtv_audio_utils/dmxwrap/MultiHwDemux/AmLinuxDvb.cpp)
list(APPEND DTV_FILES dtv_audio_utils/dmxwrap/MultiHwDemux/AmDmx.cpp)
list(APPEND DTV_FILES dtv_audio_utils/audio_data_read/dmx_audio_es.cpp)
list(APPEND DTV_FILES dtv_audio_utils/audio_data_read/uio_audio_read.c)
list(APPEND DVB_AUDIO_INC dtv_audio_utils)
list(APPEND DVB_AUDIO_INC dtv_audio_utils/include)
list(APPEND DVB_AUDIO_INC dtv_audio_utils/dmxwrap)
list(APPEND DVB_AUDIO_INC dtv_audio_utils/dmxwrap/MultiHwDemux)
list(APPEND DVB_AUDIO_INC dtv_audio_utils/audio_read_api)
add_definitions(-DUSE_DTV)
endif()
if(USE_APP_MIXING)
add_definitions(-DUSE_APP_MIXING)
endif()
if(USE_DIAG_LOG)
add_definitions(-DDIAG_LOG)
endif()
option(USE_EQ_DRC "Compile with EQ/DRC" OFF)
if(USE_EQ_DRC)
list(APPEND EQ_DRC_FILES
aml_aq_hw/audio_eq_drc_compensation.c
aml_aq_hw/audio_eq_drc_parser.c
)
add_definitions(-DUSE_EQ_DRC)
endif()
if(USE_MEDIA_INFO)
add_definitions(-DUSE_MEDIAINFO)
endif()
if(USE_MSYNC)
add_definitions(-DUSE_MSYNC)
endif()
#############################################
# libaudio_hal
#############################################
list(APPEND AUDIOHAL_FILES
decoder/aml_aac_dec_api.c
decoder/aml_ddp_dec_api.c
decoder/aml_dec_api.c
decoder/aml_dtshd_dec_api.c
decoder/aml_dtsx_dec_api.c
decoder/aml_mpeg_dec_api.c
decoder/aml_pcm_dec_api.c
decoder/aml_adpcm_dec_api.c
decoder/aml_flac_dec_api.c
decoder/aml_vorbis_dec_api.c
decoder/aml_opus_dec_api.c
decoder/aml_mpegh_dec_api.c
decoder/aml_iamf_dec_api.c
utils/parser/ac3_parser_utils.c
utils/parser/aml_ac3_parser.c
utils/parser/aml_audio_mpegparser.c
utils/parser/aml_audio_ac3parser.c
utils/parser/aml_audio_ac4parser.c
utils/parser/aml_audio_bitsparser.c
utils/parser/aml_audio_matparser.c
utils/parser/aml_audio_heaacparser.c
utils/parser/aml_dts_audio_parser.c
utils/parser/aml_audio_mpeghparser.c
utils/parser/aml_audio_parser.c
utils/parser/aml_mpegh_uimanager.c
utils/resampler/aml_audio_resample_manager.c
utils/resampler/aml_audio_resampler.c
utils/resampler/aml_resample_wrap.cpp
utils/resampler/audio_android_resample_api.c
utils/resampler/audio_simple_resample_api.c
audio_hal/alsa_config_parameters.c
audio_hal/alsa_manager.c
audio_hal/external_output_manager.c
audio_hal/external_output_handle.c
audio_hal/aml_audio_delay.c
audio_hal/aml_audio_ease.c
audio_hal/amlAudioMixer.c
audio_hal/aml_audio_stream.c
audio_hal/aml_audio_spdifout.c
audio_hal/aml_audio_timer.c
input/tv_patch_avsync.c
input/tv_patch_format_parser.c
audio_hal/audio_hw.c
audio_hal/audio_hw_resource_mgr.c
audio_hal/audio_hw_ms12_common.c
audio_hal/audio_hw_ms12_v2.c
audio_hal/aml_audio_ms12_sync.c
audio_hal/audio_hw_profile.c
audio_hal/audio_route.c
audio_hal/audio_hwsync.c
audio_hal/audio_hw_utils.c
audio_hal/audio_port.c
audio_hal/audio_virtual_buf.c
audio_hal/dolby_lib_api.c
audio_hal/hw_avsync.c
audio_hal/spdif_encoder_api.c
audio_hal/aml_audio_ms12_render.c
audio_hal/aml_audio_nonms12_render.c
audio_hal/audio_mediasync.c
audio_hal/audio_mediasync_wrap.c
audio_hal/aml_audio_output.c
audio_hal/audio_ms12_continuous_standby.c
audio_hal/audio_mpegh.c
audio_hal/audio_llp.c
audio_hal/aml_audio_command_worker.c
audio_hal/aml_audio_command_worker_handler.c
input/hdmirx_utils.c
input/dtv_patch_hal_avsync.c
input/tv_patch.c
input/tv_patch_ctrl.c
input/component_picture_mode.c
input/aml_noise_gate.c
input/device_patch.c
input/tv_private_object.c
input/dtv_private_object.c
input/device_patch_mgr.c
audio_hal/aml_config_parser.c
audio_hal/aml_config_data.c
audio_hal/earc_utils.c
audio_hal/hal_clipmeta.c
audio_hal/aml_audio_scaletempo.c
audio_hal/karaoke_manager.c
audio_hal/aml_capture_output.c
audio_hal/audio_parser.c
audio_hal/aml_hwmixer_handle.c
audio_hal/aml_hwmixer_manager.c
audio_hal/aml_audio_port.c
audio_hal/aml_audio_unit.c
audio_hal/deep_buffer_unit.c
audio_hal/mixer_out_unit.c
audio_hal/aml_audio_input.c
audio_hal/aml_policy.c
utils/cJSON/cJSON.c
utils/aml_hw_mixer.c
utils/alsa_device_parser.c
utils/aml_alsa_mixer.c
utils/aml_data_utils.c
utils/aml_dump_debug.c
utils/aml_malloc_debug.c
utils/aml_ringbuffer.c
utils/aml_volume_utils.c
utils/aml_audio_property.c
utils/aml_configs/aml_conf_loader.c
utils/aml_configs/aml_conf_parser.c
utils/aml_audio_mute.c
utils/audio_data_process.c
utils/tinyalsa/pcm.c
utils/tinyalsa/mixer.c
utils/tinyalsa/limits.c
utils/tinyalsa/mixer_hw.c
utils/tinyalsa/mixer_plugin.c
utils/tinyalsa/pcm_hw.c
utils/tinyalsa/pcm_plugin.c
utils/tinyalsa/snd_card_plugin.c
utils/channels.c
utils/aml_audio_spdifdec.c
utils/aml_avsync_stub.c
utils/aml_reverb.c
utils/format.c
utils/aml_audio_uevent.c
utils/dictionary.c
utils/iniparser.c
utils/primitives.c
utils/SPDIFEncoderAD.cpp
utils/spdif/AC3FrameScanner.cpp
utils/spdif/BitFieldParser.cpp
utils/spdif/DTSFrameScanner.cpp
utils/spdif/FrameScanner.cpp
utils/spdif/MatFrameScanner.cpp
utils/spdif/SPDIFEncoder.cpp
utils/libaudioprocessing/AudioResampler.cpp
utils/libaudioprocessing/AudioResamplerSinc.cpp
utils/libaudioprocessing/AudioResamplerCubic.cpp
utils/libaudioprocessing/AudioResamplerDyn.cpp
utils/mpegh_iec/iec61937_dec.cpp
utils/mpegh_iec/iec61937_enc.cpp
utils/mpegh_iec/bitbuffer.cpp
utils/mpegh_iec/EarconPacketWriter_lib.cpp
utils/aml_audio_limiter.c
vendor_process/audio_post_process.c
vendor_process/audio_effect_if.c
vendor_process/aml_audio_aec.c
vendor_process/AI/ai_core/src/ai_audio_core.cpp
vendor_process/AI/ai_core/src/ai_audio_aiaq.cpp
vendor_process/AI/ai_core/src/ai_audio_enhancement.cpp
vendor_process/AI/ai_core/src/ai_audio_vocal_isolate.cpp
vendor_process/AI/ai_core/src/ai_audio_loudness.cpp
vendor_process/AI/ai_core/src/ai_audio_aloop_record.cpp
vendor_process/AI/wrappers/audio_aiaq/aml_audio_aiaq.c
vendor_process/AI/wrappers/audio_aloop_record/aml_audio_aloop_record.c
vendor_process/AI/wrappers/audio_enhancement/aml_audio_enhancement.c
vendor_process/AI/wrappers/audio_loudness/aml_audio_loudness.c
vendor_process/AI/wrappers/audio_vocal_isolate/aml_audio_vocal_isolate.c
encoder/aml_aac_enc_api.c
encoder/aml_enc_api.c)
if(L_PROJECT)
add_definitions(-DL_PROJECT)
message("build for L_PROJECT")
list(APPEND AUDIOHAL_FILES
projects/audio_controls.c
projects/audio_controls_utils.c
projects/audio_controls_proc.c
)
endif()
add_library(audio_hal SHARED
${AUDIOHAL_FILES}
${DTV_FILES}
${EQ_DRC_FILES}
)
add_definitions(-DNDEBUG -DREPLACE_OUTPUT_BUFFER_WITH_CALLBACK -DDOLBY_MS12_ENABLE -DBUILD_LINUX)
if(NO_USE_CAP)
add_definitions(-DNO_AUDIO_CAP)
if(NO_USE_CAP_MUTE_HDMI)
add_definitions(-DNO_AUDIO_CAP_MUTE_HDMI)
endif()
endif()
message(WARNING "Audio_hal CMAKE_SYSTEM_PROCESSOR is ${CMAKE_SYSTEM_PROCESSOR}")
if (CMAKE_SYSTEM_PROCESSOR MATCHES "(arm)")
set(PREBUILD_STATIC_LIBS
${CMAKE_SOURCE_DIR}/aml_aq_hw/lib_aml_ng.a
${CMAKE_SOURCE_DIR}/aml_aq_hw/Amlogic_DRC_Param_Generator.a
${CMAKE_SOURCE_DIR}/aml_aq_hw/Amlogic_EQ_Param_Generator.a)
else ()
set(PREBUILD_STATIC_LIBS
${CMAKE_SOURCE_DIR}/aml_aq_hw/lib_aml_ng64.a
${CMAKE_SOURCE_DIR}/aml_aq_hw/Amlogic_DRC_Param_Generator64.a
${CMAKE_SOURCE_DIR}/aml_aq_hw/Amlogic_EQ_Param_Generator64.a)
endif ()
set_target_properties(audio_hal PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION 2)
target_include_directories(audio_hal PRIVATE
./include
../hal_audio_service/include
./utils/resampler/include
./utils/resampler
./decoder
./utils/parser/include
./utils/parser
./utils/include
./utils/include/spdif
./utils/tinyalsa/include
./utils/cJSON
./utils/mpegh_iec/
./utils/mpegh_iec/include
./vendor_process/include
./vendor_process/AI/ai_core/include
./vendor_process/AI/iva_alg_interface
./vendor_process/AI/wrappers/include
./input/include
./aml_aq_hw
./dtv_audio_utils/audio_read_api
./audio_hal
./encoder
${AML_BUILD_DIR})
if(L_PROJECT)
target_include_directories(audio_hal PRIVATE
./projects)
endif()
if(USE_DTV)
target_include_directories(audio_hal PRIVATE
${DTV_INC}
${DVB_AUDIO_INC})
target_link_libraries(audio_hal
${DTV_LIBS}
${DVB_AUDIO_LIBS})
endif()
if(SUPPORT_EXTERNAL_OUTPUT)
target_link_libraries(audio_hal ms12v2 -lasound)
endif()
target_include_directories(audio_hal PRIVATE ./decoder/libms12/include)
if(USE_EQ_DRC)
target_include_directories(audio_hal PRIVATE
./include/aml_aq_hw
./aml_aq_hw)
target_link_libraries(audio_hal ${PREBUILD_STATIC_LIBS})
target_compile_options(audio_hal PRIVATE -DAML_EQ_DRC)
endif()
if(USE_MEDIA_INFO)
target_link_libraries(audio_hal -lamlminfo)
endif()
if(USE_MSYNC)
target_link_libraries(audio_hal -lamlavsync)
else()
target_link_libraries(audio_hal)
endif()
if(USE_SC2)
add_definitions(-DDVB_AUDIO_SC2)
endif()
if(ANDROID_BUILD)
target_compile_options(audio_hal PRIVATE -D_GNU_SOURCE -DTV_AUDIO_OUTPUT
-O2 -Werror -Werror=return-type -Wno-error=gnu-variable-sized-type-not-at-end -Wno-error=incompatible-pointer-types-discards-qualifiers -Wno-error=implicit-const-int-float-conversion -Wno-deprecated-declarations -Wno-error=shift-negative-value -funwind-tables -fasynchronous-unwind-tables -fPIC -g)
target_include_directories(audio_hal PRIVATE
${PROJECT_SOURCE_DIR}/../android_prebuild/usr/include/)
target_link_libraries(audio_hal
-L${CMAKE_INSTALL_PREFIX}/lib -L${PROJECT_SOURCE_DIR}/../android_prebuild/usr/lib
-lms12v2
-lcutils -llog -lexpat -lstdc++ -ldl -Wl,-z,defs
-Wl,-soname,libaudio_hal.so)
install(TARGETS audio_hal
LIBRARY DESTINATION "lib")
install(DIRECTORY include include/hardware include/system
DESTINATION include
FILES_MATCHING PATTERN "*.h")
else()
target_compile_options(audio_hal PRIVATE -D_GNU_SOURCE -DTV_AUDIO_OUTPUT -Wall -Werror -Werror=return-type -Werror=maybe-uninitialized
-Wno-error=stringop-truncation -Wno-error=enum-compare -Wno-error=unused-but-set-variable -Wno-error=class-memaccess -Wno-error=discarded-qualifiers -Wno-deprecated-declarations -funwind-tables -fasynchronous-unwind-tables -fPIC -g)
target_link_libraries(audio_hal ms12v2
-lcutils -lamaudioutils -llog -lexpat -lpthread -ldl -lstdc++ -lrt -Wl,-z,defs)
install(TARGETS audio_hal
LIBRARY DESTINATION "lib")
install(FILES audio_hal/mixer_paths.xml
DESTINATION /etc)
install(DIRECTORY include include/hardware include/system
DESTINATION include
FILES_MATCHING PATTERN "*.h")
if (CMAKE_SYSTEM_PROCESSOR MATCHES "(arm)")
install(PROGRAMS aml_aq_hw/Amlogic_DRC_Param_Generator aml_aq_hw/Amlogic_EQ_Param_Generator
DESTINATION /usr/bin)
endif()
endif()