Skip to content

Commit 501f5d7

Browse files
authored
Merge branch 'main' into iamf_v2_test_vectors
2 parents 4278243 + dcf8667 commit 501f5d7

384 files changed

Lines changed: 18974 additions & 35786 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "code/dep_external/src/oar-private"]
2+
path = code/dep_external/src/oar-private
3+
url = https://github.com/AOMediaCodec/oar-private

code/AUTHORS.TXT

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ Jungkyu Kim<jungkyu.kim@samsung.com>
33
Kyungrae Kim<kr728.kim@samsung.com>
44
Sunghee Hwang<hshee@samsung.com>
55
Yongmin Kwon<ymin12.kwon@samsung.com>
6+
Wonbeen Jo<wonbeen.jo@samsung.com>
67
Yoonjae Son<yoonjae.son@samsung.com>
78
Chaebin Im<cb._.im@samsung.com>
89
Woohyun Nam<woohyun.nam@samsung.com>
910
Yilun Zhang<yilun.zhang@samsung.com>
1011
Jingbo Hou<jingbo.hou@samsung.com>
11-
Yiming Dong<yiming.dong@samsung.com>

code/CMakeLists.txt

Lines changed: 105 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -1,178 +1,149 @@
1-
cmake_minimum_required(VERSION 3.6)
1+
cmake_minimum_required(VERSION 3.28)
22

33
project (iamf)
4-
message(STATUS "start build iamf")
4+
message(STATUS "Start build libiamf")
55

6-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -Werror=unused-variable")
7-
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
8-
9-
option(BUILD_SHARED_LIBS "Build shared library" ON)
6+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
7+
if(NOT MSVC)
8+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=unused-variable")
9+
endif()
10+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
1011

11-
set(CODEC_LIB_DIR "${PROJECT_SOURCE_DIR}/dep_codecs/lib")
12-
set(CODEC_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/dep_codecs/include")
13-
set(EXTER_LIB_DIR "${PROJECT_SOURCE_DIR}/dep_external/lib")
14-
set(EXTER_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/dep_external/include")
12+
set(DEP_CODECS_DIR "${PROJECT_SOURCE_DIR}/dep_codecs")
13+
set(DEP_EXTERNAL_DIR "${PROJECT_SOURCE_DIR}/dep_external")
1514

15+
option(IAMF_BUILD_SHARED_LIB "Build shared library" ON)
16+
option(IAMF_ENABLE_BINAURALIZER "Enable binaural rendering" ON)
17+
option(ENABLE_BUILD_CODECS "Build all codecs" ON)
18+
option(IAMF_TEST_TOOL "IAMF test tool" OFF)
1619
option(SUPPORT_VERIFIER "Output vlogging file" OFF)
20+
1721
if (SUPPORT_VERIFIER)
18-
message(STATUS "Output vlogging file")
19-
add_definitions(-DSUPPORT_VERIFIER=1)
22+
message(STATUS "Output vlogging file")
23+
add_definitions(-DSUPPORT_VERIFIER=1)
2024
endif()
2125

22-
option(CODEC_CAP "Codec capability check" ON)
23-
option(MULTICHANNEL_BINAURALIZER "Enable multichannel binaural rendering" OFF)
24-
option(HOA_BINAURALIZER "Enable HOA binaural rendering" OFF)
25-
2626
if (CMAKE_BUILD_TYPE)
27-
string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE)
28-
if ("${BUILD_TYPE}" STREQUAL "debug")
29-
add_definitions(-DIA_DBG)
30-
message(STATUS "Debug mode.")
31-
endif()
32-
endif()
33-
34-
if(MULTICHANNEL_BINAURALIZER)
35-
message(STATUS "Enable multichannel binaural rendering")
36-
add_definitions(-DENABLE_MULTICHANNEL_TO_BINAURAL=1)
27+
string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE)
28+
if ("${BUILD_TYPE}" STREQUAL "debug")
29+
add_definitions(-DIA_DBG)
30+
message(STATUS "Debug mode")
31+
endif()
3732
endif()
3833

39-
if(HOA_BINAURALIZER)
40-
message(STATUS "Enable HOA binaural rendering")
41-
add_definitions(-DENABLE_HOA_TO_BINAURAL=1)
42-
endif()
43-
44-
if(CODEC_CAP)
45-
unset(find_opus CACHE)
46-
find_library(find_opus NAMES opus PATHS ${CODEC_LIB_DIR} NO_DEFAULT_PATH)
47-
if(${find_opus} STREQUAL "find_opus-NOTFOUND")
48-
message(WARNING "the opus library was not found")
49-
else()
50-
add_definitions(-DCONFIG_OPUS_CODEC)
51-
endif()
52-
53-
unset(find_aac CACHE)
54-
find_library(find_aac NAMES fdk-aac PATHS ${CODEC_LIB_DIR} NO_DEFAULT_PATH)
55-
if(${find_aac} STREQUAL "find_aac-NOTFOUND")
56-
message(WARNING "the fdk-aac library was not found")
57-
else()
58-
add_definitions(-DCONFIG_AAC_CODEC)
59-
endif()
60-
61-
unset(find_flac CACHE)
62-
find_library(find_flac NAMES FLAC PATHS ${CODEC_LIB_DIR} NO_DEFAULT_PATH)
63-
if(${find_flac} STREQUAL "find_flac-NOTFOUND")
64-
message(WARNING "the FLAC library was not found")
65-
else()
66-
add_definitions(-DCONFIG_FLAC_CODEC)
67-
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
34+
if (ENABLE_BUILD_CODECS)
35+
add_subdirectory(dep_codecs)
36+
add_definitions(-DCONFIG_OPUS_CODEC -DCONFIG_AAC_CODEC -DCONFIG_FLAC_CODEC)
37+
if(MSVC)
6838
add_definitions(-DFLAC__NO_DLL)
69-
endif()
70-
endif()
39+
endif()
40+
else()
41+
unset(find_opus CACHE)
42+
find_library(find_opus NAMES opus PATHS ${DEP_CODECS_DIR}/lib NO_DEFAULT_PATH)
43+
if(${find_opus} STREQUAL "find_opus-NOTFOUND")
44+
message(STATUS "The opus library was not found")
45+
else()
46+
add_definitions(-DCONFIG_OPUS_CODEC)
47+
endif()
48+
49+
unset(find_aac CACHE)
50+
find_library(find_aac NAMES fdk-aac PATHS ${DEP_CODECS_DIR}/lib NO_DEFAULT_PATH)
51+
if(${find_aac} STREQUAL "find_aac-NOTFOUND")
52+
message(STATUS "The aac library was not found")
53+
else()
54+
add_definitions(-DCONFIG_AAC_CODEC)
55+
endif()
56+
57+
unset(find_flac CACHE)
58+
find_library(find_flac NAMES FLAC PATHS ${DEP_CODECS_DIR}/lib NO_DEFAULT_PATH)
59+
if(${find_flac} STREQUAL "find_flac-NOTFOUND")
60+
message(STATUS "The flac library was not found")
61+
else()
62+
add_definitions(-DCONFIG_FLAC_CODEC)
63+
if(MSVC)
64+
add_definitions(-DFLAC__NO_DLL)
65+
endif()
66+
endif()
7167
endif()
7268

73-
include_directories (include)
74-
aux_source_directory (dep_external/src/wav DIR_DEP_EXTERNAL_WAV)
75-
aux_source_directory (src/common DIR_IAMF_COMMON)
76-
aux_source_directory (src/iamf_dec DIR_IAMF_DEC)
77-
aux_source_directory (src/iamf_dec/arch DIR_IAMF_DEC_ARCH)
78-
aux_source_directory (src/iamf_dec/arch/arm DIR_IAMF_DEC_ARCH_ARM)
79-
aux_source_directory (src/iamf_dec/arch/x86 DIR_IAMF_DEC_ARCH_X86)
80-
if(NOT ${find_opus} STREQUAL "find_opus-NOTFOUND")
81-
aux_source_directory (src/iamf_dec/opus DIR_IAMF_DEC_OPUS)
82-
endif()
83-
if(NOT ${find_aac} STREQUAL "find_aac-NOTFOUND")
84-
aux_source_directory (src/iamf_dec/aac DIR_IAMF_DEC_AAC)
85-
endif()
86-
if(NOT ${find_flac} STREQUAL "find_flac-NOTFOUND")
87-
aux_source_directory (src/iamf_dec/flac DIR_IAMF_DEC_FLAC)
69+
if (IAMF_ENABLE_BINAURALIZER)
70+
set(OAR_ENABLE_BINAURALIZER ON)
71+
else()
72+
set(OAR_ENABLE_BINAURALIZER OFF)
8873
endif()
89-
aux_source_directory (src/iamf_dec/pcm DIR_IAMF_DEC_PCM)
90-
74+
set(OAR_BUILD_SHARED_LIBRARY OFF)
75+
add_subdirectory(dep_external/src/oar-private/liboar)
9176

77+
file(GLOB_RECURSE sources CONFIGURE_DEPENDS
78+
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.c"
79+
"${CMAKE_CURRENT_SOURCE_DIR}/dep_external/src/wav/*.c")
9280

9381
include_directories(
94-
${CODEC_INCLUDE_DIR}
95-
${EXTER_INCLUDE_DIR}
96-
${PROJECT_SOURCE_DIR}/src/common
82+
include
83+
${DEP_CODECS_DIR}/include
84+
${DEP_EXTERNAL_DIR}/include
85+
${DEP_EXTERNAL_DIR}/src/oar-private/liboar/include
86+
${DEP_EXTERNAL_DIR}/src/oar-private/liboar/src/common
9787
${PROJECT_SOURCE_DIR}/src/iamf_dec
98-
${PROJECT_SOURCE_DIR}/src/iamf_dec/arch
99-
${PROJECT_SOURCE_DIR}/src/iamf_dec/arch/arm
100-
${PROJECT_SOURCE_DIR}/src/iamf_dec/arch/x86
101-
${PROJECT_SOURCE_DIR}/src/iamf_dec/opus
102-
${PROJECT_SOURCE_DIR}/src/iamf_dec/aac
103-
${PROJECT_SOURCE_DIR}/src/iamf_dec/flac
88+
${PROJECT_SOURCE_DIR}/src/iamf_dec/codec
89+
${PROJECT_SOURCE_DIR}/src/iamf_dec/codec/opus
90+
${PROJECT_SOURCE_DIR}/src/iamf_dec/codec/aac
91+
${PROJECT_SOURCE_DIR}/src/iamf_dec/codec/flac
92+
${PROJECT_SOURCE_DIR}/src/iamf_dec/common
93+
${PROJECT_SOURCE_DIR}/src/iamf_dec/obu
10494
)
95+
10596
link_directories (
106-
${CODEC_LIB_DIR}
97+
${DEP_CODECS_DIR}/lib
10798
)
10899

109-
if(MULTICHANNEL_BINAURALIZER OR HOA_BINAURALIZER)
110-
link_directories(
111-
${EXTER_LIB_DIR}/binaural
112-
)
100+
if(IAMF_BUILD_SHARED_LIB)
101+
add_library(${PROJECT_NAME} SHARED ${sources})
102+
else()
103+
add_library(${PROJECT_NAME} STATIC ${sources})
113104
endif()
114-
115-
if(BUILD_SHARED_LIBS)
116-
add_library(${PROJECT_NAME} SHARED ${DIR_DEP_EXTERNAL_WAV} ${DIR_IAMF_COMMON}
117-
${DIR_IAMF_DEC_OPUS} ${DIR_IAMF_DEC_AAC} ${DIR_IAMF_DEC_FLAC} ${DIR_IAMF_DEC_PCM} ${DIR_IAMF_DEC}
118-
${DIR_IAMF_DEC_ARCH} ${DIR_IAMF_DEC_ARCH_ARM} ${DIR_IAMF_DEC_ARCH_X86})
119-
120-
if(NOT ${find_opus} STREQUAL "find_opus-NOTFOUND")
121-
target_link_libraries (${PROJECT_NAME} opus)
122-
endif()
123-
124-
if(NOT ${find_aac} STREQUAL "find_aac-NOTFOUND")
125-
target_link_libraries (${PROJECT_NAME} fdk-aac)
126-
endif()
127-
128-
if(NOT ${find_flac} STREQUAL "find_flac-NOTFOUND")
129-
target_link_libraries (${PROJECT_NAME} FLAC)
130-
endif()
131-
132-
if(MULTICHANNEL_BINAURALIZER)
133-
target_link_libraries (${PROJECT_NAME} iamf2bear)
134-
endif()
135-
if(HOA_BINAURALIZER)
136-
target_link_libraries (${PROJECT_NAME} iamf2resonance)
137-
endif()
138-
target_link_libraries (${PROJECT_NAME} m)
105+
if (ENABLE_BUILD_CODECS)
106+
add_dependencies(${PROJECT_NAME} dep_opus dep_aac dep_flac)
107+
target_link_libraries (${PROJECT_NAME} opus fdk-aac FLAC)
139108
else()
140-
add_library(${PROJECT_NAME} STATIC ${DIR_DEP_EXTERNAL_WAV} ${DIR_IAMF_COMMON}
141-
${DIR_IAMF_DEC_OPUS} ${DIR_IAMF_DEC_AAC} ${DIR_IAMF_DEC_PCM}
142-
${DIR_IAMF_DEC_FLAC} ${DIR_IAMF_DEC} ${DIR_IAMF_DEC_ARCH} ${DIR_IAMF_DEC_ARCH_ARM}
143-
${DIR_IAMF_DEC_ARCH_X86})
109+
if(NOT ${find_opus} STREQUAL "find_opus-NOTFOUND")
110+
target_link_libraries (${PROJECT_NAME} opus)
111+
endif()
112+
if(NOT ${find_aac} STREQUAL "find_aac-NOTFOUND")
113+
target_link_libraries (${PROJECT_NAME} fdk-aac)
114+
endif()
115+
if(NOT ${find_flac} STREQUAL "find_flac-NOTFOUND")
116+
target_link_libraries (${PROJECT_NAME} FLAC)
117+
endif()
144118
endif()
119+
if(NOT MSVC)
120+
target_link_libraries (${PROJECT_NAME} m)
121+
endif()
122+
target_link_libraries (${PROJECT_NAME} oar)
145123

124+
if(IAMF_TEST_TOOL)
125+
add_subdirectory(test/tools/iamfdec)
126+
endif()
146127

147-
148-
set(IAMF_PUBLIC_HEADER
149-
${CMAKE_CURRENT_SOURCE_DIR}/include/IAMF_decoder.h
150-
${CMAKE_CURRENT_SOURCE_DIR}/include/IAMF_defines.h
151-
${CMAKE_CURRENT_SOURCE_DIR}/include/vlogging_tool_sr.h
152-
)
153-
set_target_properties(iamf PROPERTIES PUBLIC_HEADER "${IAMF_PUBLIC_HEADER}")
154-
128+
file(GLOB iamf_public_headers CONFIGURE_DEPENDS
129+
"${CMAKE_CURRENT_SOURCE_DIR}/include/*")
130+
set_target_properties(iamf PROPERTIES PUBLIC_HEADER "${iamf_public_headers}")
155131

156132
set(prefix ${CMAKE_INSTALL_PREFIX})
157133
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
158134
set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
159135
set(includedir ${CMAKE_INSTALL_PREFIX}/include)
160136
configure_file(iamf.pc.in iamf.pc)
161137
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/iamf.pc
162-
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
138+
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
163139

164-
if(BUILD_SHARED_LIBS)
165-
install(TARGETS ${PROJECT_NAME}
140+
if(IAMF_BUILD_SHARED_LIB)
141+
install(TARGETS ${PROJECT_NAME}
166142
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
167143
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/iamf)
168144
else()
169-
install(TARGETS ${PROJECT_NAME}
145+
install(TARGETS ${PROJECT_NAME}
170146
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
171147
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/iamf)
172148
endif()
173149

174-
if(MULTICHANNEL_BINAURALIZER OR HOA_BINAURALIZER)
175-
install(DIRECTORY ${EXTER_LIB_DIR}/binaural
176-
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
177-
endif()
178-

0 commit comments

Comments
 (0)