403 lines
12 KiB
CMake
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()
|