-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
233 lines (220 loc) · 10 KB
/
Copy pathCMakeLists.txt
File metadata and controls
233 lines (220 loc) · 10 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
cmake_minimum_required(VERSION 3.10)
project (VIDEOCODECPROJ)
set(CMAKE_CXX_STANDARD 17)
option(ENABLE_SRT "Enable srt streaming" OFF)
option(FFMPEG_SOFT "Enable FFmpeg soft codec" OFF)
option(FFMPEG_NVIDIA "Enable FFmpeg nvidia codec" OFF)
option(DVPP_MPI "Enable Ascend DVPP V2 codec" OFF)
option(NVIDIA_SDK_X86 "Enable NVIDIA Video Codec SDK codec" OFF)
option(NVIDIA_SDK_ARM "Enable Jetson codec" OFF)
option(DETECTION_NVIDIA "Enable Nvidia detection" OFF)
option(DETECTION_ASCEND "Enable Ascend detection" OFF)
option(DETECTION_HYGON "Enable hygon detection" OFF)
option(MCP_PYBIND "Enable Python binding" OFF)
if(MCP_PYBIND)
message(STATUS "MCP_PYBIND enabled: disable all detection modules")
set(DETECTION_NVIDIA OFF CACHE BOOL "Disable Nvidia detection" FORCE)
set(DETECTION_ASCEND OFF CACHE BOOL "Disable Ascend detection" FORCE)
set(DETECTION_HYGON OFF CACHE BOOL "Disable Hygon detection" FORCE)
endif()
if(WIN32)
# ffmpeg
include_directories("D:/msys64/mingw64/include")
include_directories("D:/msys64/home/sunkx1/ff-build/include")
link_directories("D:/msys64/mingw64/lib")
link_directories("D:/msys64/home/sunkx1/ff-build/lib")
# opencv
include_directories("D:/opencv-mingw/install/include")
link_directories("D:/opencv-mingw/install/x64/mingw/lib")
elseif(UNIX)
include_directories(/usr/local/include)
link_directories(/usr/local/lib /usr/lib)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
endif()
include_directories(Warpper Log third_party/spdlog/include
HardCodec HardCodec/Decoder HardCodec/Encoder
Media/MediaCommon
Media/MediaMuxer
third_party/Bitstream/h264/include third_party/Bitstream/h265/include
Media/MediaReader Media/MediaReader/FileReader
Media/MediaReader/RtspReader third_party/simple-rtsp-client third_party/simple-rtsp-client/3rdparty third_party/simple-rtsp-client/rtp
Media/RtmpClient third_party/libflv/include third_party/rtmpdump/librtmp
Media/TsTransport third_party/libmpeg2core/include
Time)
aux_source_directory(Test TEST)
aux_source_directory(Warpper WRAPPER)
# codec
aux_source_directory(HardCodec/Decoder HARDDEC)
aux_source_directory(HardCodec/Encoder HARDENC)
# Media
aux_source_directory(Media/MediaCommon MEDIACOMMON)
aux_source_directory(Media/MediaMuxer MUXER)
aux_source_directory(Media/MediaReader/FileReader FILEREADER)
aux_source_directory(Media/MediaReader/RtspReader RTSPREADER)
aux_source_directory(third_party/simple-rtsp-client RTSPSRC)
aux_source_directory(third_party/simple-rtsp-client/3rdparty RTSP3Rd)
aux_source_directory(third_party/simple-rtsp-client/rtp RTP)
aux_source_directory(third_party/Bitstream/h264/source BH264)
aux_source_directory(third_party/Bitstream/h265/src BH265)
aux_source_directory(Media/RtmpClient RTMPCLIENT)
aux_source_directory(third_party/libflv/source LIBFLV)
aux_source_directory(third_party/rtmpdump/librtmp LIBRTMP)
aux_source_directory(Media/TsTransport TSTRANSPORT)
aux_source_directory(third_party/libmpeg2core/source MPEG2CORE)
set(EXECUTABLE_OUTPUT_PATH ./)
add_compile_options(-g -Wno-deprecated-declarations)
set(CMAKE_BUILD_TYPE Release)
######################
#### input/output ####
######################
if(ENABLE_SRT)
message(STATUS "ENABLE_SRT OK")
add_definitions(-DENABLE_LIBSRT)
endif()
###############
#### codec ####
###############
if(FFMPEG_NVIDIA)
message(STATUS "USE_FFMPEG_NVIDIA OK")
add_definitions(-DUSE_FFMPEG_NVIDIA)
elseif(FFMPEG_SOFT)
message(STATUS "USE_FFMPEG_SOFT OK")
add_definitions(-DUSE_FFMPEG_SOFT)
elseif(DVPP_MPI)
message(STATUS "USE_DVPP_MPI OK")
add_definitions(-DUSE_DVPP_MPI -DHMEV_PLATFORM_SDK)
include_directories(/usr/local/Ascend/ascend-toolkit/latest/runtime/include/acl /usr/local/Ascend/ascend-toolkit/latest/runtime/include/acl/dvpp
HardCodec/DVPP_utils/dvpp_enc HardCodec/DVPP_utils)
link_directories(/usr/local/Ascend/ascend-toolkit/latest/runtime/lib64)
aux_source_directory(HardCodec/DVPP_utils/dvpp_enc DVPP_ENC)
aux_source_directory(HardCodec/DVPP_utils DVPP_UTILS)
elseif(NVIDIA_SDK_X86)
message(STATUS "USE_NVIDIA_X86 OK")
add_definitions(-DUSE_NVIDIA_X86)
enable_language(CUDA)
# set(CMAKE_CUDA_ARCHITECTURES "AUTO")
# export PATH=$PATH:/usr/local/cuda/bin
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
include_directories(/usr/local/cuda/include)
include_directories(HardCodec/Nvcodec_utils/NvDec HardCodec/Nvcodec_utils/NvEnc HardCodec/Nvcodec_utils/Interface HardCodec/Nvcodec_utils/CudaProc)
link_directories(/usr/local/cuda/lib64)
aux_source_directory(HardCodec/Nvcodec_utils/NvDec NVDEC)
aux_source_directory(HardCodec/Nvcodec_utils/NvEnc NVENC)
set(CUDA_SOURCES HardCodec/Nvcodec_utils/CudaProc/ColorSpace.cu) # Add all your .cu files here
elseif(NVIDIA_SDK_ARM)
message(STATUS "USE_NVIDIA_ARM OK")
add_definitions(-DUSE_NVIDIA_ARM)
enable_language(CUDA)
# set(CMAKE_CUDA_ARCHITECTURES "AUTO")
# export PATH=$PATH:/usr/local/cuda/bin
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
include_directories(/usr/local/cuda/include)
include_directories(HardCodec/Jetson_utils HardCodec/Jetson_utils/include HardCodec/Jetson_utils/include/libjpeg-8b /usr/include/libdrm HardCodec/Jetson_utils/common/algorithm/cuda)
link_directories(/usr/lib/aarch64-linux-gnu/tegra /lib/aarch64-linux-gnu /usr/local/lib /usr/lib /usr/local/cuda/lib64)
aux_source_directory(HardCodec/Jetson_utils JETSON_UTILS)
aux_source_directory(HardCodec/Jetson_utils/common/classes JETSON_UTILS_COMMON)
aux_source_directory(HardCodec/Jetson_utils/common/algorithm/cuda JETSON_UTILS_COMMON_CUDA)
endif()
###################
#### Cognition ####
###################
if(DETECTION_NVIDIA OR DETECTION_ASCEND OR DETECTION_HYGON)
message(STATUS "Enable detection")
include_directories(Cognition/Detection third_party/ByteTrack-cpp/include)
include_directories(/usr/include/eigen3) # for ByteTrack
aux_source_directory(Cognition/Detection DETECTION)
aux_source_directory(third_party/ByteTrack-cpp/src BYTETRACK)
endif()
if(DETECTION_NVIDIA)
enable_language(CUDA)
add_definitions(-DDETECTION_NVIDIA)
include_directories(/data/sunkx/TensorRT-10.4.0.26/include)
link_directories(/data/sunkx/TensorRT-10.4.0.26/lib)
include_directories(/usr/local/cuda/include)
link_directories(/usr/local/cuda/lib64)
add_compile_options(-Wno-deprecated-declarations)
include_directories(Cognition/Detection/dataProcessKernel)
set(DATA_PROCESS_CUDA_SOURCES Cognition/Detection/dataProcessKernel/dataProcess.cu) # Add all your .cu files here
elseif(DETECTION_ASCEND)
add_definitions(-DDETECTION_ASCEND)
add_definitions(-DENABLE_DVPP_INTERFACE) # for ACL Lib
include_directories(/usr/local/Ascend/ascend-toolkit/latest/runtime/include /usr/local/Ascend/ascend-toolkit/latest/runtime/include/acl /usr/local/Ascend/ascend-toolkit/latest/runtime/include/acl/dvpp)
link_directories(/usr/local/Ascend/ascend-toolkit/latest/runtime/lib64)
elseif(DETECTION_HYGON)
enable_language(CUDA)
add_definitions(-DDETECTION_HYGON)
include_directories(Cognition/Detection/dataProcessKernel)
set(DATA_PROCESS_CUDA_SOURCES Cognition/Detection/dataProcessKernel/dataProcess.cu) # Add all your .cu files here
include_directories(/opt/dtk/cuda/cuda/include /opt/dtk/include)
link_directories(/opt/dtk/cuda/cuda/lib64 /opt/dtk/lib)
endif()
####################
# Python interface #
####################
if(MCP_PYBIND)
add_definitions(-DMCP_PYBIND)
find_package(Python3 REQUIRED COMPONENTS Interpreter Development)
set(PYBIND11_FINDPYTHON ON)
include_directories(third_party/pybind11/include ${Python3_INCLUDE_DIRS})
endif()
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ./)
add_library(mcp SHARED ${WRAPPER} ${MEDIACOMMON} ${HARDDEC} ${HARDENC} ${MUXER} ${FILEREADER} ${RTSPREADER} ${RTSPSRC} ${RTSP3Rd} ${RTP} ${BH264} ${BH265} ${RTMPCLIENT} ${LIBFLV} ${LIBRTMP}
${TSTRANSPORT} ${MPEG2CORE}
${DVPP_ENC} ${DVPP_UTILS} ${NVDEC} ${NVENC} ${CUDA_SOURCES} ${JETSON_UTILS} ${JETSON_UTILS_COMMON} ${JETSON_UTILS_COMMON_CUDA} ${DETECTION} ${BYTETRACK} ${DATA_PROCESS_CUDA_SOURCES})
target_link_libraries(mcp avutil avformat avcodec swscale swresample ${OpenCV_LIBS} ssl crypto)
######################
#### input/output ####
######################
if(ENABLE_SRT)
target_link_libraries(mcp srt)
endif()
###############
#### codec ####
###############
if(DVPP_MPI)
target_link_libraries(mcp ascendcl acl_dvpp_mpi)
endif()
if(NVIDIA_SDK_X86)
target_link_libraries(mcp nvcuvid nvidia-encode cudart cuda nppidei nppicc)
endif()
if(NVIDIA_SDK_ARM)
target_link_libraries(mcp cudart cuda nppidei nppicc v4l2 EGL GLESv2 X11 nvbufsurface nvbufsurftransform nvjpeg nvosd drm)
endif()
###################
#### Cognition ####
###################
if(DETECTION_NVIDIA)
target_link_libraries(mcp nvinfer cudart nppig nppidei nppial)
elseif(DETECTION_ASCEND)
target_link_libraries(mcp ascendcl acl_dvpp_mpi)
elseif(DETECTION_HYGON)
target_link_libraries(mcp cudart nppig nppidei nppial migraphx migraphx_gpu migraphx_onnx)
endif()
####################
# Python interface #
####################
if(MCP_PYBIND)
target_link_libraries(mcp Python3::Python)
endif()
if(WIN32)
# Set the function stack size to 6MB
add_compile_options(-Wl,--stack,6000000)
target_link_libraries(mcp ws2_32 opencv_core470 opencv_imgproc470 opencv_highgui470)
elseif(UNIX)
target_link_libraries(mcp pthread)
endif()
if(MCP_PYBIND)
####################
# Python interface #
####################
add_subdirectory(third_party/pybind11)
pybind11_add_module(mcp_module python_module.cpp)
target_link_libraries(mcp_module PRIVATE mcp)
else()
####################
## C++ interface ##
####################
add_executable(MediaCodec ${TEST})
target_link_libraries(MediaCodec mcp)
endif()