blob: c882c0a03207d14740a205259408ed2bdcb2c34a [file] [log] [blame]
Tim Yaoe004da02019-12-03 11:59:05 -08001cmake_minimum_required(VERSION 3.8)
2
3project(aml_audio_hal
4 VERSION 1.0)
5
6include(GNUInstallDirs)
xingri.gao10142162024-02-29 01:44:46 +00007if (DEFINED AML_BUILD_DIR)
8 message("AML_BUILD_DIR is defined.")
9else()
10 message("AML_BUILD_DIR is not defined, set default.")
11 set(AML_BUILD_DIR "./audio_hal")
12endif()
13
14execute_process(COMMAND sh version_config.sh ${AML_BUILD_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
15
wei.wang1697eab62021-08-09 00:36:53 -040016add_subdirectory("audio_codec/libvorbis")
yayun.shi62e67942021-08-23 10:18:13 +080017add_subdirectory("audio_codec/libdts")
wei.wang18beebd82022-03-01 16:30:14 +080018add_subdirectory("audio_codec/libdcv")
wei.du097b1682024-04-07 09:21:53 +000019add_subdirectory("utils/libaudioprocessing")
Tim Yaoe004da02019-12-03 11:59:05 -080020
21add_library(spdifenc STATIC
22 utils/SPDIFEncoderAD.cpp
23 utils/spdifenc_wrap.cpp
xingri.gaoc906c032023-09-28 03:05:28 +000024 utils/spdif/AC3FrameScanner.cpp
25 utils/spdif/BitFieldParser.cpp
26 utils/spdif/DTSFrameScanner.cpp
27 utils/spdif/FrameScanner.cpp
28 utils/spdif/MatFrameScanner.cpp
29 utils/spdif/SPDIFEncoder.cpp
Tim Yaoe004da02019-12-03 11:59:05 -080030)
31
32target_include_directories(spdifenc PRIVATE
33 ./audio_hal
34 ./include
yayun.shi4a7148a2021-07-16 06:13:50 -040035 ./include/utils
shu.zhang52563292021-10-15 14:51:18 +080036 ./include/basic_utils
yayun.shi4a7148a2021-07-16 06:13:50 -040037 ./utils/tinyalsa/include
xingri.gaoc906c032023-09-28 03:05:28 +000038 ./utils/include
39 ./utils/include/spdif
40 ./utils/spdif)
Tim Yaoe004da02019-12-03 11:59:05 -080041
Tim Yaoe419f812021-01-20 21:15:05 -080042target_compile_options(spdifenc PRIVATE -Wno-deprecated-declarations -fPIC)
Tim Yaoe004da02019-12-03 11:59:05 -080043
haiyang.ren2f649512023-09-01 04:50:52 +000044option(DISABLE_SERVER "rm audio server" OFF)
cheng tong12e5d132020-09-25 18:57:09 +080045option(USE_DTV "Compile with DTV option" OFF)
hui.liu300e42e2021-11-22 14:04:05 +080046option(NO_USE_CAP "Don't support audio capture" OFF)
Zhizhong Zhang16302302021-01-20 22:29:14 +080047option(USE_SC2 "Current platform is sc2" OFF)
hui.liu300e42e2021-11-22 14:04:05 +080048option(NO_USE_CAP_MUTE_HDMI "Don't support audio capture mute for HDMI INPUT" OFF)
Tim Yao97c694d2021-02-25 12:12:53 -080049option(USE_APP_MIXING "Support appsound mixing" ON)
Tim Yaob9e78d82021-03-22 23:46:23 -070050option(USE_DIAG_LOG "Support diagnostic logging for RDK" OFF)
Blance Tangf81e6112022-08-19 08:37:15 +080051option(USE_MEDIA_INFO "Support media info API reporting" OFF)
Tim Yaobcf95152023-01-23 09:27:17 -080052option(USE_MS12_V26 "Use MS12 v2.6" OFF)
xingri.gao6c213832023-05-15 02:11:37 +000053option(USE_MSYNC "Compile with MSYNC option" ON)
hui.liudfdc8622024-03-22 09:36:22 +000054option(USE_DTS_VX4 "Use DTS VX4" ON)
jing.zhangf497c3b2021-09-01 17:31:53 +080055
Tim Yaobcf95152023-01-23 09:27:17 -080056if(USE_MS12_V26)
wei.du097b1682024-04-07 09:21:53 +000057add_subdirectory("decoder/libms12_v26")
Tim Yao420ff162023-02-02 17:26:25 -080058add_definitions(-DMS12_V26_ENABLE)
Tim Yaobcf95152023-01-23 09:27:17 -080059else()
wei.du097b1682024-04-07 09:21:53 +000060add_subdirectory("decoder/libms12_v24")
Tim Yao420ff162023-02-02 17:26:25 -080061add_definitions(-DMS12_V24_ENABLE)
Tim Yaobcf95152023-01-23 09:27:17 -080062endif()
Pradeep Sriramd18aa612020-05-14 13:05:34 -070063
hui.liudfdc8622024-03-22 09:36:22 +000064#For DTS VX version selected
65if(USE_DTS_VX4)
66 message("Use DTS VX4")
67 add_definitions(-DDTS_VX_V4_ENABLE)
68endif()
69
haiyang.ren2f649512023-09-01 04:50:52 +000070if(DISABLE_SERVER)
71 add_definitions(-DNO_SERVER)
72endif()
73
Pradeep Sriramd18aa612020-05-14 13:05:34 -070074if(USE_DTV)
wei.du097b1682024-04-07 09:21:53 +000075 list(APPEND DTV_FILES input/dtv_patch.c)
76 list(APPEND DTV_FILES input/dtv_patch_utils.c)
Zhizhong Zhang16302302021-01-20 22:29:14 +080077 list(APPEND DVB_AUDIO_INC ./dtv_audio_utils/sync)
cheng tongfbe9e342021-11-02 13:03:35 +080078 list(APPEND DVB_AUDIO_INC ./dtv_audio_utils/dmxwrap/MultiHwDemux)
Zhizhong Zhang16302302021-01-20 22:29:14 +080079 list(APPEND DVB_AUDIO_LIBS -L./dtv_audio_utils -ldvbaudioutils)
80
cheng tong7177c1b2020-09-17 17:36:27 +080081 add_definitions(-DUSE_DTV)
Pradeep Sriramd18aa612020-05-14 13:05:34 -070082endif()
83
Tim Yao97c694d2021-02-25 12:12:53 -080084if(USE_APP_MIXING)
85add_definitions(-DUSE_APP_MIXING)
86endif()
87
Tim Yaob9e78d82021-03-22 23:46:23 -070088if(USE_DIAG_LOG)
89add_definitions(-DDIAG_LOG)
90endif()
Song Zhaoc23fabe2020-09-18 13:28:40 -070091option(USE_EQ_DRC "Compile with EQ/DRC" OFF)
92
cheng tong12e5d132020-09-25 18:57:09 +080093if(USE_EQ_DRC)
94 list(APPEND EQ_DRC_FILES
wei.du097b1682024-04-07 09:21:53 +000095 aml_aq_hw/audio_eq_drc_compensation.c
96 aml_aq_hw/audio_eq_drc_parser.c
97 aml_aq_hw/ini/dictionary.c
98 aml_aq_hw/ini/iniparser.c)
yayun.shi4a7148a2021-07-16 06:13:50 -040099 add_definitions(-DUSE_EQ_DRC)
cheng tong12e5d132020-09-25 18:57:09 +0800100endif()
101
Rade Vulin8f219c52022-07-07 05:16:51 -0700102if(USE_MEDIA_INFO)
103 add_definitions(-DUSE_MEDIAINFO)
104endif()
105
xingri.gao6c213832023-05-15 02:11:37 +0000106if(USE_MSYNC)
107 add_definitions(-DUSE_MSYNC)
108endif()
109
Tim Yaoe004da02019-12-03 11:59:05 -0800110#############################################
111# libaudio_hal
112#############################################
shu.zhang52563292021-10-15 14:51:18 +0800113file(GLOB BASIC_UTILS_FILES "utils/basic_utils/*.cpp")
114file(GLOB BASIC_CUTILS_FILES "utils/basic_cutils/*.c")
Tim Yaoe004da02019-12-03 11:59:05 -0800115add_library(audio_hal SHARED
wei.du097b1682024-04-07 09:21:53 +0000116 decoder/aml_aac_dec_api.c
117 decoder/aml_ddp_dec_api.c
118 decoder/aml_dec_api.c
119 decoder/aml_dtshd_dec_api.c
120 decoder/aml_dtsx_dec_api.c
121 decoder/aml_mpeg_dec_api.c
122 decoder/aml_pcm_dec_api.c
123 decoder/aml_adpcm_dec_api.c
124 decoder/aml_flac_dec_api.c
125 decoder/aml_vorbis_dec_api.c
126 utils/parser/ac3_parser_utils.c
127 utils/parser/aml_ac3_parser.c
128 utils/parser/aml_audio_ac3parser.c
129 utils/parser/aml_audio_ac4parser.c
130 utils/parser/aml_audio_bitsparser.c
131 utils/parser/aml_audio_matparser.c
132 utils/parser/aml_audio_heaacparser.c
133 utils/resampler/aml_audio_resample_manager.c
134 utils/resampler/aml_audio_resampler.c
135 utils/resampler/aml_resample_wrap.cpp
136 utils/resampler/audio_android_resample_api.c
137 utils/resampler/audio_simple_resample_api.c
138 utils/speed/aml_audio_speed_manager.c
139 utils/speed/audio_sonic_speed_api.c
140 utils/speed/sonic_speed_wrapper.c
141 utils/speed/sonic/sonic.c
Tim Yaoe004da02019-12-03 11:59:05 -0800142 audio_hal/alsa_config_parameters.c
143 audio_hal/alsa_manager.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400144 audio_hal/audio_bt_sco.c
Tim Yaoe004da02019-12-03 11:59:05 -0800145 audio_hal/aml_audio_delay.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400146 #audio_hal/a2dp_hal.cpp
Tim Yaoe004da02019-12-03 11:59:05 -0800147 audio_hal/aml_audio_ease.c
148 audio_hal/amlAudioMixer.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400149 audio_hal/aml_audio_ms12_bypass.c
Tim Yaoe004da02019-12-03 11:59:05 -0800150 audio_hal/aml_audio_stream.c
Tim Yaobcf95152023-01-23 09:27:17 -0800151 audio_hal/aml_audio_spdifout.c
Tim Yaoe004da02019-12-03 11:59:05 -0800152 audio_hal/aml_audio_timer.c
wei.du097b1682024-04-07 09:21:53 +0000153 input/tv_patch_avsync.c
154 input/tv_patch_format_parser.c
Tim Yaoe004da02019-12-03 11:59:05 -0800155 audio_hal/audio_hw.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400156 audio_hal/audio_hw_ms12_common.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400157 audio_hal/audio_hw_ms12_v2.c
158 audio_hal/aml_audio_ms12_sync.c
Tim Yaoe004da02019-12-03 11:59:05 -0800159 audio_hal/audio_hw_profile.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400160 audio_hal/audio_route.c
Tim Yaoe004da02019-12-03 11:59:05 -0800161 audio_hal/audio_hwsync.c
162 audio_hal/audio_hw_utils.c
163 audio_hal/audio_port.c
Tim Yaoe004da02019-12-03 11:59:05 -0800164 audio_hal/audio_virtual_buf.c
165 audio_hal/dolby_lib_api.c
166 audio_hal/hw_avsync.c
Tim Yaoe004da02019-12-03 11:59:05 -0800167 audio_hal/spdif_encoder_api.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400168 audio_hal/aml_audio_dev2mix_process.c
169 audio_hal/aml_audio_ms12_render.c
170 audio_hal/aml_audio_nonms12_render.c
jing.zhang0ffa5722022-05-23 11:33:11 +0800171 audio_hal/aml_esmode_sync.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400172 audio_hal/audio_mediasync_wrap.c
wei.du097b1682024-04-07 09:21:53 +0000173 input/hdmirx_utils.c
174 input/dtv_patch_hal_avsync.c
175 input/tv_patch.c
176 input/tv_patch_ctrl.c
yayun.shid6eaaf42021-08-06 07:02:13 -0400177 audio_hal/aml_config_parser.c
yayun.shiabe66972021-08-11 22:45:44 -0400178 audio_hal/aml_config_data.c
yujia.liange61d34b2022-10-14 12:25:45 +0800179 audio_hal/earc_utils.c
xingri.gaofa54f182024-02-23 06:41:04 +0000180 audio_hal/hal_clipmeta.c
wei.du097b1682024-04-07 09:21:53 +0000181 audio_hal/aml_audio_scaletempo.c
yayun.shid6eaaf42021-08-06 07:02:13 -0400182 utils/cJSON/cJSON.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400183 utils/aml_hw_mixer.c
Tim Yaoe004da02019-12-03 11:59:05 -0800184 utils/alsa_device_parser.c
185 utils/aml_alsa_mixer.c
186 utils/aml_android_utils.c
Tim Yaoe004da02019-12-03 11:59:05 -0800187 utils/aml_buffer_provider.c
188 utils/aml_data_utils.c
189 utils/aml_dump_debug.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400190 utils/aml_malloc_debug.c
Tim Yaoe004da02019-12-03 11:59:05 -0800191 utils/aml_ringbuffer.c
192 utils/aml_volume_utils.c
193 utils/aml_configs/aml_conf_loader.c
194 utils/aml_configs/aml_conf_parser.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400195 utils/audio_data_process.c
196 utils/tinyalsa/pcm.c
197 utils/tinyalsa/mixer.c
yayun.shi927908f2023-01-28 11:26:49 +0800198 utils/channels.c
wei.du097b1682024-04-07 09:21:53 +0000199 utils/aml_audio_spdifdec.c
200 utils/aml_avsync_stub.c
201 vendor_process/audio_post_process.c
202 vendor_process/audio_effect_if.c
203 vendor_process/aml_audio_aec.c
shu.zhang52563292021-10-15 14:51:18 +0800204 ${BASIC_UTILS_FILES}
205 ${BASIC_CUTILS_FILES}
yayun.shi4a7148a2021-07-16 06:13:50 -0400206 #rcaudio/audio_hal_thunks.cpp
Pradeep Sriramd18aa612020-05-14 13:05:34 -0700207 ${DTV_FILES}
cheng tong12e5d132020-09-25 18:57:09 +0800208 ${EQ_DRC_FILES}
Tim Yaoe004da02019-12-03 11:59:05 -0800209)
210
Tim Yaobcf95152023-01-23 09:27:17 -0800211add_definitions(-DNDEBUG -DREPLACE_OUTPUT_BUFFER_WITH_CALLBACK -DDOLBY_MS12_ENABLE -DBUILD_LINUX)
hui.liu300e42e2021-11-22 14:04:05 +0800212if(NO_USE_CAP)
213add_definitions(-DNO_AUDIO_CAP)
Tim Yaob5e98392021-03-03 11:51:26 -0800214
hui.liu300e42e2021-11-22 14:04:05 +0800215if(NO_USE_CAP_MUTE_HDMI)
216 add_definitions(-DNO_AUDIO_CAP_MUTE_HDMI)
Tim Yaob5e98392021-03-03 11:51:26 -0800217endif()
Tim Yao2c66a762021-01-06 18:08:33 -0800218endif()
Tim Yao4bff6782019-12-26 18:31:40 -0800219
yayun.shi62796de2021-08-27 18:11:05 +0800220message(WARNING "Audio_hal CMAKE_SYSTEM_PROCESSOR is ${CMAKE_SYSTEM_PROCESSOR}")
221if (CMAKE_SYSTEM_PROCESSOR MATCHES "(arm)")
Tim Yaoe004da02019-12-03 11:59:05 -0800222set(PREBUILD_STATIC_LIBS
wei.du097b1682024-04-07 09:21:53 +0000223 ${CMAKE_SOURCE_DIR}/aml_aq_hw/lib_aml_ng.a
224 ${CMAKE_SOURCE_DIR}/aml_aq_hw/Amlogic_DRC_Param_Generator.a
225 ${CMAKE_SOURCE_DIR}/aml_aq_hw/Amlogic_EQ_Param_Generator.a)
yayun.shi62796de2021-08-27 18:11:05 +0800226else ()
227set(PREBUILD_STATIC_LIBS
wei.du097b1682024-04-07 09:21:53 +0000228 ${CMAKE_SOURCE_DIR}/aml_aq_hw/lib_aml_ng64.a
229 ${CMAKE_SOURCE_DIR}/aml_aq_hw/Amlogic_DRC_Param_Generator64.a
230 ${CMAKE_SOURCE_DIR}/aml_aq_hw/Amlogic_EQ_Param_Generator64.a)
yayun.shi62796de2021-08-27 18:11:05 +0800231endif ()
Tim Yaoe004da02019-12-03 11:59:05 -0800232
233set_target_properties(audio_hal PROPERTIES
234 VERSION ${PROJECT_VERSION}
235 SOVERSION 1)
236
237target_include_directories(audio_hal PRIVATE
Tim Yaoe004da02019-12-03 11:59:05 -0800238 ./include
yayun.shi4a7148a2021-07-16 06:13:50 -0400239 ../hal_audio_service/include
Tim Yaoe004da02019-12-03 11:59:05 -0800240 ./include/utils
shu.zhang52563292021-10-15 14:51:18 +0800241 ./include/basic_utils
242 ./include/basic_utils/utils
wei.du097b1682024-04-07 09:21:53 +0000243 ./utils/speed/include
244 ./utils/speed
245 ./utils/resampler/include
246 ./utils/resampler
247 ./decoder
248 ./utils/parser/include
249 ./utils/parser
yayun.shi4a7148a2021-07-16 06:13:50 -0400250 ./utils/include
xingri.gaoc906c032023-09-28 03:05:28 +0000251 ./utils/include/spdif
yayun.shi4a7148a2021-07-16 06:13:50 -0400252 ./utils/tinyalsa/include
yayun.shid6eaaf42021-08-06 07:02:13 -0400253 ./utils/cJSON
wei.du097b1682024-04-07 09:21:53 +0000254 ./vendor_process/include
255 ./input/include
256 ./aml_aq_hw
yayun.shi4a7148a2021-07-16 06:13:50 -0400257 ./dtv_audio_utils/audio_read_api
xingri.gao10142162024-02-29 01:44:46 +0000258 ./audio_hal
259 ${AML_BUILD_DIR})
Tim Yaoe004da02019-12-03 11:59:05 -0800260
Tim Yaoe419f812021-01-20 21:15:05 -0800261target_compile_options(audio_hal PRIVATE -D_GNU_SOURCE -DTV_AUDIO_OUTPUT -Wno-deprecated-declarations -funwind-tables -fasynchronous-unwind-tables -fPIC)
Tim Yaoe004da02019-12-03 11:59:05 -0800262
263target_link_libraries(audio_hal
cheng tongfbe9e342021-11-02 13:03:35 +0800264 audioprocessing spdifenc ms12v2
wei.du329bbcc2022-08-09 15:20:18 +0800265 -lcutils -lamaudioutils -llog -lexpat -lpthread -ldl -lstdc++ -lrt -Wl,-z,defs)
Song Zhaoc23fabe2020-09-18 13:28:40 -0700266
Tim Yaobcf95152023-01-23 09:27:17 -0800267if(USE_MS12_V26)
wei.du097b1682024-04-07 09:21:53 +0000268 target_include_directories(audio_hal PRIVATE ./decoder/libms12_v26/include)
Tim Yaobcf95152023-01-23 09:27:17 -0800269else()
wei.du097b1682024-04-07 09:21:53 +0000270 target_include_directories(audio_hal PRIVATE ./decoder/libms12_v24/include)
Tim Yaobcf95152023-01-23 09:27:17 -0800271endif()
272
Song Zhaoc23fabe2020-09-18 13:28:40 -0700273if(USE_EQ_DRC)
274 target_include_directories(audio_hal PRIVATE
wei.du097b1682024-04-07 09:21:53 +0000275 ./include/aml_aq_hw
276 ./aml_aq_hw
277 ./aml_aq_hw/ini)
cheng tongfbe9e342021-11-02 13:03:35 +0800278 target_link_libraries(audio_hal ${PREBUILD_STATIC_LIBS})
Song Zhaoc23fabe2020-09-18 13:28:40 -0700279 target_compile_options(audio_hal PRIVATE -DAML_EQ_DRC)
Song Zhaoc23fabe2020-09-18 13:28:40 -0700280endif()
281
282if(USE_DTV)
Zhizhong Zhang16302302021-01-20 22:29:14 +0800283 target_include_directories(audio_hal PRIVATE
284 ${DTV_INC}
285 ${DVB_AUDIO_INC})
286 target_link_libraries(audio_hal
287 ${DTV_LIBS}
wei.du1e96ac22022-05-25 20:45:14 +0800288 ${DVB_AUDIO_LIBS})
Zhizhong Zhang16302302021-01-20 22:29:14 +0800289endif()
290
Rade Vulin8f219c52022-07-07 05:16:51 -0700291if(USE_MEDIA_INFO)
292 target_link_libraries(audio_hal -lamlminfo)
293endif()
jing.zhangf497c3b2021-09-01 17:31:53 +0800294
xingri.gao6c213832023-05-15 02:11:37 +0000295if(USE_MSYNC)
jing.zhangf497c3b2021-09-01 17:31:53 +0800296target_link_libraries(audio_hal -lamlavsync)
xingri.gao6c213832023-05-15 02:11:37 +0000297else()
298target_link_libraries(audio_hal)
299endif()
Tim Yao35766e42021-02-22 17:35:58 -0800300
Zhizhong Zhang16302302021-01-20 22:29:14 +0800301if(USE_SC2)
302 add_definitions(-DDVB_AUDIO_SC2)
Song Zhaoc23fabe2020-09-18 13:28:40 -0700303endif()
Tim Yaoe004da02019-12-03 11:59:05 -0800304
305install(TARGETS audio_hal
306 LIBRARY DESTINATION "lib")
307
308install(FILES audio_hal/mixer_paths.xml
309 DESTINATION /etc)
310
yayun.shi62796de2021-08-27 18:11:05 +0800311if (CMAKE_SYSTEM_PROCESSOR MATCHES "(arm)")
wei.du097b1682024-04-07 09:21:53 +0000312install(PROGRAMS aml_aq_hw/Amlogic_DRC_Param_Generator aml_aq_hw/Amlogic_EQ_Param_Generator
cheng tong5ae92692020-08-28 14:13:39 +0800313 DESTINATION /usr/bin)
yayun.shi62796de2021-08-27 18:11:05 +0800314endif ()