blob: d4a40631edb5ab20d0218ade064a1980308b43ac [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)
jing.zhange42179c2022-04-15 18:05:55 +08007execute_process(COMMAND sh version_config.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
yayun.shi4a7148a2021-07-16 06:13:50 -04008add_subdirectory("libms12_v24")
yayun.shif83e1a22021-07-22 01:33:58 -04009add_subdirectory("audio_codec/libfaad")
10add_subdirectory("audio_codec/libmad")
wei.wang1697eab62021-08-09 00:36:53 -040011add_subdirectory("audio_codec/libvorbis")
yayun.shi62e67942021-08-23 10:18:13 +080012add_subdirectory("audio_codec/libdts")
wei.wang18beebd82022-03-01 16:30:14 +080013add_subdirectory("audio_codec/libdcv")
Tim Yaoe004da02019-12-03 11:59:05 -080014add_subdirectory("audio_hal/libaudioprocessing")
15
16add_library(spdifenc STATIC
17 utils/SPDIFEncoderAD.cpp
18 utils/spdifenc_wrap.cpp
19)
20
21target_include_directories(spdifenc PRIVATE
22 ./audio_hal
23 ./include
yayun.shi4a7148a2021-07-16 06:13:50 -040024 ./include/utils
shu.zhang52563292021-10-15 14:51:18 +080025 ./include/basic_utils
yayun.shi4a7148a2021-07-16 06:13:50 -040026 ./utils/tinyalsa/include
27 ./utils/include)
Tim Yaoe004da02019-12-03 11:59:05 -080028
Tim Yaoe419f812021-01-20 21:15:05 -080029target_compile_options(spdifenc PRIVATE -Wno-deprecated-declarations -fPIC)
Tim Yaoe004da02019-12-03 11:59:05 -080030
cheng tong12e5d132020-09-25 18:57:09 +080031option(USE_DTV "Compile with DTV option" OFF)
hui.liu300e42e2021-11-22 14:04:05 +080032option(NO_USE_CAP "Don't support audio capture" OFF)
Zhizhong Zhang16302302021-01-20 22:29:14 +080033option(USE_SC2 "Current platform is sc2" OFF)
hui.liu300e42e2021-11-22 14:04:05 +080034option(NO_USE_CAP_MUTE_HDMI "Don't support audio capture mute for HDMI INPUT" OFF)
Tim Yao97c694d2021-02-25 12:12:53 -080035option(USE_APP_MIXING "Support appsound mixing" ON)
Tim Yaob9e78d82021-03-22 23:46:23 -070036option(USE_DIAG_LOG "Support diagnostic logging for RDK" OFF)
Blance Tangf81e6112022-08-19 08:37:15 +080037option(USE_MEDIA_INFO "Support media info API reporting" OFF)
jing.zhangf497c3b2021-09-01 17:31:53 +080038
Pradeep Sriramd18aa612020-05-14 13:05:34 -070039
40if(USE_DTV)
yayun.shi4a7148a2021-07-16 06:13:50 -040041 list(APPEND DTV_FILES dtv_audio_utils/audio_data_read/audio_dtv_ad.c)
Pradeep Sriramd18aa612020-05-14 13:05:34 -070042 list(APPEND DTV_FILES audio_hal/audio_hw_dtv.c)
yayun.shi4a7148a2021-07-16 06:13:50 -040043 list(APPEND DTV_FILES audio_hal/audio_dtv_utils.c)
yayun.shi4a7148a2021-07-16 06:13:50 -040044 list(APPEND DTV_LIBS -L./amadec -laudamadec)
cheng tongfbe9e342021-11-02 13:03:35 +080045 list(APPEND DTV_LIBS -lam_adp -lasound)
Zhizhong Zhang16302302021-01-20 22:29:14 +080046 list(APPEND DVB_AUDIO_INC ./dtv_audio_utils/sync)
cheng tongfbe9e342021-11-02 13:03:35 +080047 list(APPEND DVB_AUDIO_INC ./dtv_audio_utils/dmxwrap/MultiHwDemux)
yayun.shi4a7148a2021-07-16 06:13:50 -040048 list(APPEND DVB_AUDIO_INC ./amadec/include)
Zhizhong Zhang16302302021-01-20 22:29:14 +080049 list(APPEND DVB_AUDIO_LIBS -L./dtv_audio_utils -ldvbaudioutils)
50
cheng tong7177c1b2020-09-17 17:36:27 +080051 add_definitions(-DUSE_DTV)
Pradeep Sriramd18aa612020-05-14 13:05:34 -070052endif()
53
Tim Yao97c694d2021-02-25 12:12:53 -080054if(USE_APP_MIXING)
55add_definitions(-DUSE_APP_MIXING)
56endif()
57
Tim Yaob9e78d82021-03-22 23:46:23 -070058if(USE_DIAG_LOG)
59add_definitions(-DDIAG_LOG)
60endif()
Song Zhaoc23fabe2020-09-18 13:28:40 -070061option(USE_EQ_DRC "Compile with EQ/DRC" OFF)
62
cheng tong12e5d132020-09-25 18:57:09 +080063if(USE_EQ_DRC)
64 list(APPEND EQ_DRC_FILES
65 amlogic_AQ_tools/audio_eq_drc_compensation.c
66 amlogic_AQ_tools/audio_eq_drc_parser.c
67 amlogic_AQ_tools/ini/dictionary.c
68 amlogic_AQ_tools/ini/iniparser.c)
yayun.shi4a7148a2021-07-16 06:13:50 -040069 add_definitions(-DUSE_EQ_DRC)
cheng tong12e5d132020-09-25 18:57:09 +080070endif()
71
Rade Vulin8f219c52022-07-07 05:16:51 -070072if(USE_MEDIA_INFO)
73 add_definitions(-DUSE_MEDIAINFO)
74endif()
75
Tim Yaoe004da02019-12-03 11:59:05 -080076#############################################
77# libaudio_hal
78#############################################
shu.zhang52563292021-10-15 14:51:18 +080079file(GLOB BASIC_UTILS_FILES "utils/basic_utils/*.cpp")
80file(GLOB BASIC_CUTILS_FILES "utils/basic_cutils/*.c")
Tim Yaoe004da02019-12-03 11:59:05 -080081add_library(audio_hal SHARED
yayun.shi4a7148a2021-07-16 06:13:50 -040082 aml_adecs/aml_aac_dec_api.c
83 aml_adecs/aml_ddp_dec_api.c
84 aml_adecs/aml_dec_api.c
85 aml_adecs/aml_dts_dec_api.c
86 aml_adecs/aml_mpeg_dec_api.c
87 aml_adecs/aml_pcm_dec_api.c
shu.zhangcebe6d82021-07-21 05:49:06 -040088 aml_adecs/aml_flac_dec_api.c
shu.zhangb3d790c2021-08-08 21:30:30 -040089 aml_adecs/aml_vorbis_dec_api.c
yayun.shi4a7148a2021-07-16 06:13:50 -040090 aml_parser/ac3_parser_utils.c
91 aml_parser/aml_ac3_parser.c
92 aml_parser/aml_audio_ac3parser.c
93 aml_parser/aml_audio_ac4parser.c
94 aml_parser/aml_audio_bitsparser.c
95 aml_parser/aml_audio_matparser.c
96 aml_resampler/aml_audio_resample_manager.c
97 aml_resampler/aml_audio_resampler.c
98 aml_resampler/aml_resample_wrap.cpp
99 aml_resampler/audio_android_resample_api.c
100 aml_resampler/audio_simple_resample_api.c
101 aml_speed/aml_audio_speed_manager.c
102 aml_speed/audio_sonic_speed_api.c
103 aml_speed/sonic_speed_wrapper.c
wei.wang170bd7b72022-02-16 12:16:56 +0800104 aml_speed/sonic/sonic.c
Tim Yaoe004da02019-12-03 11:59:05 -0800105 audio_hal/alsa_config_parameters.c
106 audio_hal/alsa_manager.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400107 audio_hal/audio_bt_sco.c
Tim Yaoe004da02019-12-03 11:59:05 -0800108 audio_hal/aml_audio_delay.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400109 #audio_hal/a2dp_hal.cpp
Tim Yaoe004da02019-12-03 11:59:05 -0800110 audio_hal/aml_audio_ease.c
111 audio_hal/amlAudioMixer.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400112 audio_hal/aml_audio_ms12_bypass.c
Tim Yaoe004da02019-12-03 11:59:05 -0800113 audio_hal/aml_audio_stream.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400114 audio_hal/aml_audio_spdifout.c
Tim Yaoe004da02019-12-03 11:59:05 -0800115 audio_hal/aml_audio_timer.c
116 audio_hal/aml_avsync_tuning.c
Tim Yaoe004da02019-12-03 11:59:05 -0800117 audio_hal/audio_format_parse.c
118 audio_hal/audio_hw.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400119 audio_hal/audio_hw_ms12_common.c
120 #audio_hal/audio_hw_ms12.c by default, we compile V2,V1 is not used now. TBD
121 audio_hal/audio_hw_ms12_v2.c
122 audio_hal/aml_audio_ms12_sync.c
Tim Yaoe004da02019-12-03 11:59:05 -0800123 audio_hal/audio_hw_profile.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400124 audio_hal/audio_route.c
Tim Yaoe004da02019-12-03 11:59:05 -0800125 audio_hal/audio_hwsync.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400126 audio_hal/audio_hwsync_wrap.c
Tim Yaoe004da02019-12-03 11:59:05 -0800127 audio_hal/audio_hw_utils.c
128 audio_hal/audio_port.c
129 audio_hal/audio_post_process.c
Tim Yaoe004da02019-12-03 11:59:05 -0800130 audio_hal/audio_virtual_buf.c
131 audio_hal/dolby_lib_api.c
132 audio_hal/hw_avsync.c
133 audio_hal/hw_avsync_callbacks.c
134 audio_hal/spdif_encoder_api.c
135 audio_hal/sub_mixing_factory.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400136 audio_hal/aml_audio_dev2mix_process.c
137 audio_hal/aml_audio_ms12_render.c
138 audio_hal/aml_audio_nonms12_render.c
139 audio_hal/aml_audio_spdifdec.c
140 audio_hal/aml_dtvsync.c
jing.zhang0ffa5722022-05-23 11:33:11 +0800141 audio_hal/aml_esmode_sync.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400142 audio_hal/audio_mediasync_wrap.c
143 audio_hal/audio_hdmi_util.c
144 audio_hal/aml_audio_hal_avsync.c
yayun.shi3a40dcb2021-07-20 05:14:48 -0400145 audio_hal/tinyalsa_ext.c
yayun.shid6eaaf42021-08-06 07:02:13 -0400146 audio_hal/aml_config_parser.c
yayun.shiabe66972021-08-11 22:45:44 -0400147 audio_hal/aml_config_data.c
wei.du941fa2e2022-03-24 18:24:11 +0800148 audio_hal/audio_effect_if.c
yujia.liange61d34b2022-10-14 12:25:45 +0800149 audio_hal/earc_utils.c
yayun.shid6eaaf42021-08-06 07:02:13 -0400150 utils/cJSON/cJSON.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400151 utils/aml_hw_mixer.c
Tim Yaoe004da02019-12-03 11:59:05 -0800152 utils/alsa_device_parser.c
153 utils/aml_alsa_mixer.c
154 utils/aml_android_utils.c
155 utils/aml_audio_mixer.c
Tim Yaoe004da02019-12-03 11:59:05 -0800156 utils/aml_buffer_provider.c
157 utils/aml_data_utils.c
158 utils/aml_dump_debug.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400159 utils/aml_malloc_debug.c
Tim Yaoe004da02019-12-03 11:59:05 -0800160 utils/aml_ringbuffer.c
161 utils/aml_volume_utils.c
162 utils/aml_configs/aml_conf_loader.c
163 utils/aml_configs/aml_conf_parser.c
yayun.shi4a7148a2021-07-16 06:13:50 -0400164 utils/audio_data_process.c
165 utils/tinyalsa/pcm.c
166 utils/tinyalsa/mixer.c
shu.zhang52563292021-10-15 14:51:18 +0800167 ${BASIC_UTILS_FILES}
168 ${BASIC_CUTILS_FILES}
yayun.shi4a7148a2021-07-16 06:13:50 -0400169 #rcaudio/audio_hal_thunks.cpp
Pradeep Sriramd18aa612020-05-14 13:05:34 -0700170 ${DTV_FILES}
cheng tong12e5d132020-09-25 18:57:09 +0800171 ${EQ_DRC_FILES}
Tim Yaoe004da02019-12-03 11:59:05 -0800172)
173
yayun.shi4a7148a2021-07-16 06:13:50 -0400174add_definitions(-DNDEBUG -DREPLACE_OUTPUT_BUFFER_WITH_CALLBACK -DDOLBY_MS12_ENABLE -DMS12_V24_ENABLE -DBUILD_LINUX)
hui.liu300e42e2021-11-22 14:04:05 +0800175if(NO_USE_CAP)
176add_definitions(-DNO_AUDIO_CAP)
Tim Yaob5e98392021-03-03 11:51:26 -0800177
hui.liu300e42e2021-11-22 14:04:05 +0800178if(NO_USE_CAP_MUTE_HDMI)
179 add_definitions(-DNO_AUDIO_CAP_MUTE_HDMI)
Tim Yaob5e98392021-03-03 11:51:26 -0800180endif()
Tim Yao2c66a762021-01-06 18:08:33 -0800181endif()
Tim Yao4bff6782019-12-26 18:31:40 -0800182
yayun.shi62796de2021-08-27 18:11:05 +0800183message(WARNING "Audio_hal CMAKE_SYSTEM_PROCESSOR is ${CMAKE_SYSTEM_PROCESSOR}")
184if (CMAKE_SYSTEM_PROCESSOR MATCHES "(arm)")
Tim Yaoe004da02019-12-03 11:59:05 -0800185set(PREBUILD_STATIC_LIBS
186 ${CMAKE_SOURCE_DIR}/amlogic_AQ_tools/lib_aml_ng.a
187 ${CMAKE_SOURCE_DIR}/amlogic_AQ_tools/Amlogic_DRC_Param_Generator.a
188 ${CMAKE_SOURCE_DIR}/amlogic_AQ_tools/Amlogic_EQ_Param_Generator.a)
yayun.shi62796de2021-08-27 18:11:05 +0800189else ()
190set(PREBUILD_STATIC_LIBS
191 ${CMAKE_SOURCE_DIR}/amlogic_AQ_tools/lib_aml_ng64.a
192 ${CMAKE_SOURCE_DIR}/amlogic_AQ_tools/Amlogic_DRC_Param_Generator64.a
193 ${CMAKE_SOURCE_DIR}/amlogic_AQ_tools/Amlogic_EQ_Param_Generator64.a)
194endif ()
Tim Yaoe004da02019-12-03 11:59:05 -0800195
196set_target_properties(audio_hal PROPERTIES
197 VERSION ${PROJECT_VERSION}
198 SOVERSION 1)
199
200target_include_directories(audio_hal PRIVATE
Tim Yaoe004da02019-12-03 11:59:05 -0800201 ./include
yayun.shi4a7148a2021-07-16 06:13:50 -0400202 ../hal_audio_service/include
Tim Yaoe004da02019-12-03 11:59:05 -0800203 ./include/utils
shu.zhang52563292021-10-15 14:51:18 +0800204 ./include/basic_utils
205 ./include/basic_utils/utils
yayun.shi4a7148a2021-07-16 06:13:50 -0400206 ./aml_speed/include
207 ./aml_speed
208 ./aml_resampler/include
209 ./aml_resampler
210 ./aml_adecs/include
jianxuan.shen3c688b32022-09-09 18:08:39 +0800211 ./aml_adecs
yayun.shi4a7148a2021-07-16 06:13:50 -0400212 ./aml_parser/include
213 ./aml_parser
214 ./utils/include
215 ./utils/tinyalsa/include
yayun.shid6eaaf42021-08-06 07:02:13 -0400216 ./utils/cJSON
yayun.shi4a7148a2021-07-16 06:13:50 -0400217 ./libms12_v24/include
218 ./amlogic_AQ_tools
219 ./dtv_audio_utils/audio_read_api
yayun.shi9171f232021-09-10 10:12:23 +0800220 ./audio_hal
221 ./amadec)
Tim Yaoe004da02019-12-03 11:59:05 -0800222
Tim Yaoe419f812021-01-20 21:15:05 -0800223target_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 -0800224
225target_link_libraries(audio_hal
cheng tongfbe9e342021-11-02 13:03:35 +0800226 audioprocessing spdifenc ms12v2
wei.du329bbcc2022-08-09 15:20:18 +0800227 -lcutils -lamaudioutils -llog -lexpat -lpthread -ldl -lstdc++ -lrt -Wl,-z,defs)
Song Zhaoc23fabe2020-09-18 13:28:40 -0700228
229if(USE_EQ_DRC)
230 target_include_directories(audio_hal PRIVATE
231 ./include/amlogic_AQ_tools
232 ./amlogic_AQ_tools
233 ./amlogic_AQ_tools/ini)
cheng tongfbe9e342021-11-02 13:03:35 +0800234 target_link_libraries(audio_hal ${PREBUILD_STATIC_LIBS})
Song Zhaoc23fabe2020-09-18 13:28:40 -0700235 target_compile_options(audio_hal PRIVATE -DAML_EQ_DRC)
Song Zhaoc23fabe2020-09-18 13:28:40 -0700236endif()
237
238if(USE_DTV)
Zhizhong Zhang16302302021-01-20 22:29:14 +0800239 target_include_directories(audio_hal PRIVATE
240 ${DTV_INC}
241 ${DVB_AUDIO_INC})
242 target_link_libraries(audio_hal
243 ${DTV_LIBS}
wei.du1e96ac22022-05-25 20:45:14 +0800244 ${DVB_AUDIO_LIBS})
Zhizhong Zhang16302302021-01-20 22:29:14 +0800245endif()
246
Rade Vulin8f219c52022-07-07 05:16:51 -0700247if(USE_MEDIA_INFO)
248 target_link_libraries(audio_hal -lamlminfo)
249endif()
jing.zhangf497c3b2021-09-01 17:31:53 +0800250
251target_link_libraries(audio_hal -lamlavsync)
252
Tim Yao35766e42021-02-22 17:35:58 -0800253
Zhizhong Zhang16302302021-01-20 22:29:14 +0800254if(USE_SC2)
255 add_definitions(-DDVB_AUDIO_SC2)
Song Zhaoc23fabe2020-09-18 13:28:40 -0700256endif()
Tim Yaoe004da02019-12-03 11:59:05 -0800257
258install(TARGETS audio_hal
259 LIBRARY DESTINATION "lib")
260
261install(FILES audio_hal/mixer_paths.xml
262 DESTINATION /etc)
263
yayun.shi62796de2021-08-27 18:11:05 +0800264if (CMAKE_SYSTEM_PROCESSOR MATCHES "(arm)")
cheng tong5ae92692020-08-28 14:13:39 +0800265install(PROGRAMS amlogic_AQ_tools/Amlogic_DRC_Param_Generator amlogic_AQ_tools/Amlogic_EQ_Param_Generator
266 DESTINATION /usr/bin)
yayun.shi62796de2021-08-27 18:11:05 +0800267endif ()