blob: 5118613b1588c5a7ee339ee27aecf94f65185e02 [file] [log] [blame]
agsantos5aa39652020-08-11 18:18:04 -04001#! /bin/bash
2# Build the plugin for the project
agsantos82678f32020-12-09 15:03:24 -05003set -e
agsantosac1940d2020-09-17 10:18:40 -04004export OSTYPE
agsantos1bbc7cc2021-05-20 16:43:35 -04005ARCH=$(uname -m)
agsantos1e7736c2020-10-28 14:39:13 -04006EXTRAPATH=''
agsantosac1940d2020-09-17 10:18:40 -04007# Flags:
8
9 # -p: number of processors to use
10 # -c: Runtime plugin cpu/gpu setting.
11 # -t: target platform.
12
agsantosac1940d2020-09-17 10:18:40 -040013if [ -z "${DAEMON}" ]; then
agsantos5aa39652020-08-11 18:18:04 -040014 DAEMON="./../../daemon"
agsantosac1940d2020-09-17 10:18:40 -040015 echo "DAEMON not provided, building with ${DAEMON}"
agsantos5aa39652020-08-11 18:18:04 -040016fi
agsantos796b5af2020-12-22 19:38:27 -050017if [ -z "${PROCESSOR}" ]; then
18 PROCESSOR="CPU"
19 echo "PROCESSOR not provided, building with ${PROCESSOR}"
20fi
agsantos5aa39652020-08-11 18:18:04 -040021
22PLUGIN_NAME="GreenScreen"
agsantosac1940d2020-09-17 10:18:40 -040023JPL_FILE_NAME="${PLUGIN_NAME}.jpl"
24SO_FILE_NAME="lib${PLUGIN_NAME}.so"
agsantos5aa39652020-08-11 18:18:04 -040025DAEMON_SRC="${DAEMON}/src"
26CONTRIB_PATH="${DAEMON}/contrib"
agsantos5aa39652020-08-11 18:18:04 -040027PLUGINS_LIB="../lib"
agsantosac1940d2020-09-17 10:18:40 -040028LIBS_DIR="./../contrib/Libs"
agsantos2c8525e2021-03-19 11:18:01 -040029PREFERENCESFILENAME="preferences"
agsantos1bbc7cc2021-05-20 16:43:35 -040030PLATFORM=$(uname)
31
32if [ "${PLATFORM}" = "Linux" ]; then
33 PLATFORM="linux-gnu"
34 CONTRIB_PLATFORM_CURT=${ARCH}
35 echo "Building with ${PLATFORM}"
36elif [ "${PLATFORM}" = "Darwin" ]; then
37 PLATFORM="darwin"
38 SO_FILE_NAME="lib${PLUGIN_NAME}.dylib"
39 alias nproc='sysctl -n hw.logicalcpu'
40 CONTRIB_PLATFORM_CURT=${ARCH}-apple
41 CONTRIB_PLATFORM_EXTRA=$(uname -r)
42 echo "Building with ${PLATFORM}"
43fi
agsantosac1940d2020-09-17 10:18:40 -040044
agsantos796b5af2020-12-22 19:38:27 -050045if [ "${PROCESSOR}" = "CPU" ]; then
46 ONNX_LIBS="cpu"
47elif [ "${PROCESSOR}" = "NVIDIA" ]; then
48 ONNX_LIBS="nvidia-gpu"
49 CUBLASLT="-lcublasLt"
agsantos2c8525e2021-03-19 11:18:01 -040050 PREFERENCESFILENAME="${PREFERENCESFILENAME}-accel"
agsantosac1940d2020-09-17 10:18:40 -040051fi
agsantosac1940d2020-09-17 10:18:40 -040052
agsantosac1940d2020-09-17 10:18:40 -040053while getopts t:c:p OPT; do
54 case "$OPT" in
55 t)
56 PLATFORM="${OPTARG}"
agsantos796b5af2020-12-22 19:38:27 -050057 if [ ${PLATFORM} = "android" ]; then
58 ONNX_LIBS=""
agsantosac1940d2020-09-17 10:18:40 -040059 fi
60 ;;
61 c)
agsantosac1940d2020-09-17 10:18:40 -040062 ;;
63 p)
64 ;;
65 \?)
66 exit 1
67 ;;
68 esac
69done
agsantos5aa39652020-08-11 18:18:04 -040070
agsantosdd6a62a2021-03-29 17:13:27 -040071cp -r ffmpeg ${CONTRIB_PATH}/src/
72
agsantos1bbc7cc2021-05-20 16:43:35 -040073if [ "${PLATFORM}" = "linux-gnu" ] || [ "${PLATFORM}" = "redhat-linux" ]
agsantosac1940d2020-09-17 10:18:40 -040074then
agsantosdd6a62a2021-03-29 17:13:27 -040075 if [ -f "${CONTRIB_PATH}/native/.ffmpeg" ]; then
76 rm "${CONTRIB_PATH}/native/.ffmpeg"
77 fi
78 WORKPATH=$(pwd)
79 cd "${CONTRIB_PATH}/native/"
80 make .ffmpeg -j$(nproc)
81 rm .ffmpeg
82 cd ${WORKPATH}
agsantos1bbc7cc2021-05-20 16:43:35 -040083
agsantosdd6a62a2021-03-29 17:13:27 -040084 python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME}
agsantos1e7736c2020-10-28 14:39:13 -040085
agsantosac1940d2020-09-17 10:18:40 -040086 CONTRIB_PLATFORM=${CONTRIB_PLATFORM_CURT}-${PLATFORM}
agsantos796b5af2020-12-22 19:38:27 -050087 ONNX_PATH=${EXTRALIBS_PATH}
88 if [ -z "${EXTRALIBS_PATH}" ]
89 then
90 ONNX_PATH="${CONTRIB_PATH}/${CONTRIB_PLATFORM}"
91 fi
agsantosac1940d2020-09-17 10:18:40 -040092
93 # Compile
94 clang++ -std=c++17 -shared -fPIC \
95 -Wl,-Bsymbolic,-rpath,"\${ORIGIN}" \
96 -Wall -Wextra \
97 -Wno-unused-variable \
98 -Wno-unused-function \
99 -Wno-unused-parameter \
agsantos796b5af2020-12-22 19:38:27 -0500100 -D${PROCESSOR} \
agsantosac1940d2020-09-17 10:18:40 -0400101 -I"." \
102 -I"${DAEMON_SRC}" \
103 -I"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/include" \
104 -I"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/include/opencv4" \
agsantos796b5af2020-12-22 19:38:27 -0500105 -I"${ONNX_PATH}/include/onnxruntime/session" \
106 -I"${ONNX_PATH}/include/onnxruntime/providers/cuda" \
agsantosac1940d2020-09-17 10:18:40 -0400107 -I"${PLUGINS_LIB}" \
agsantos1e7736c2020-10-28 14:39:13 -0400108 ./../lib/accel.cpp \
agsantosc9181b42020-11-26 12:03:04 -0500109 ./../lib/frameUtils.cpp \
agsantosdd6a62a2021-03-29 17:13:27 -0400110 ./../lib/frameFilter.cpp \
agsantosac1940d2020-09-17 10:18:40 -0400111 main.cpp \
112 videoSubscriber.cpp \
agsantosac1940d2020-09-17 10:18:40 -0400113 pluginMediaHandler.cpp \
agsantos796b5af2020-12-22 19:38:27 -0500114 pluginProcessor.cpp \
agsantosac1940d2020-09-17 10:18:40 -0400115 -L"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/" \
116 -L"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/opencv4/3rdparty/" \
agsantos796b5af2020-12-22 19:38:27 -0500117 -L"${ONNX_PATH}/lib/onnxruntime/${ONNX_LIBS}" \
118 -L"${CUDA_HOME}/lib64/" \
agsantosdd6a62a2021-03-29 17:13:27 -0400119 -l:libavfilter.a \
agsantosf7e04bd2020-10-14 15:59:47 -0400120 -l:libswscale.a \
agsantosdd6a62a2021-03-29 17:13:27 -0400121 -l:libavformat.a \
122 -l:libavcodec.a \
agsantosf7e04bd2020-10-14 15:59:47 -0400123 -l:libavutil.a \
agsantosdd6a62a2021-03-29 17:13:27 -0400124 -l:libvpx.a \
125 -l:libx264.a \
agsantosac1940d2020-09-17 10:18:40 -0400126 -lopencv_imgproc \
127 -lopencv_core \
agsantos796b5af2020-12-22 19:38:27 -0500128 -lva ${CUBLASLT} \
129 -lonnxruntime \
agsantos1e7736c2020-10-28 14:39:13 -0400130 -o "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
agsantosac1940d2020-09-17 10:18:40 -0400131
agsantos796b5af2020-12-22 19:38:27 -0500132 cp "${ONNX_PATH}/lib/onnxruntime/${ONNX_LIBS}/libonnxruntime.so" "build-local/jpl/lib/$CONTRIB_PLATFORM/libonnxruntime.so.1.6.0"
133 if [ "${PROCESSOR}" = "NVIDIA" ]
agsantosac1940d2020-09-17 10:18:40 -0400134 then
agsantos796b5af2020-12-22 19:38:27 -0500135 cp "${CUDA_HOME}/lib64/libcudart.so.10.2.89" "build-local/jpl/lib/$CONTRIB_PLATFORM/libcudart.so.10.2"
136 cp "${CUDA_HOME}/lib64/libcublas.so.10.2.3.254" "build-local/jpl/lib/$CONTRIB_PLATFORM/libcublas.so.10"
137 cp "${CUDA_HOME}/lib64/libcufft.so.10.1.2.89" "build-local/jpl/lib/$CONTRIB_PLATFORM/libcufft.so.10"
138 cp "${CUDA_HOME}/lib64/libcurand.so.10.1.2.89" "build-local/jpl/lib/$CONTRIB_PLATFORM/libcurand.so.10"
139 cp "${CUDA_HOME}/lib64/libcublasLt.so.10.2.3.254" "build-local/jpl/lib/$CONTRIB_PLATFORM/libcublasLt.so.10"
140 cp "${CUDNN_HOME}/libcudnn.so.8" "build-local/jpl/lib/$CONTRIB_PLATFORM/libcudnn.so.8"
141 cp "${CUDNN_HOME}/libcudnn_ops_infer.so.8" "build-local/jpl/lib/$CONTRIB_PLATFORM/libcudnn_ops_infer.so.8"
142 fi
agsantos1e7736c2020-10-28 14:39:13 -0400143
agsantos796b5af2020-12-22 19:38:27 -0500144 mkdir "./build-local/jpl/data/model"
145 cp "./modelSRC/mModel.onnx" "./build-local/jpl/data/model/mModel.onnx"
agsantos2c8525e2021-03-19 11:18:01 -0400146 cp "./${PREFERENCESFILENAME}.json" "./build-local/jpl/data/preferences.json"
agsantosac1940d2020-09-17 10:18:40 -0400147
agsantos1bbc7cc2021-05-20 16:43:35 -0400148elif [ "${PLATFORM}" = "darwin" ]
149then
150 if [ -f "${CONTRIB_PATH}/native/.ffmpeg" ]; then
151 rm "${CONTRIB_PATH}/native/.ffmpeg"
152 fi
153 WORKPATH=$(pwd)
154 cd "${CONTRIB_PATH}/native/"
155 make .ffmpeg -j$(nproc)
156 rm .ffmpeg
157 cd ${WORKPATH}
158
159 python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME}
160
161 CONTRIB_PLATFORM=${CONTRIB_PLATFORM_CURT}-${PLATFORM}
162 ONNX_PATH=${EXTRALIBS_PATH}
163 if [ -z "${EXTRALIBS_PATH}" ]
164 then
165 ONNX_PATH="${CONTRIB_PATH}/${CONTRIB_PLATFORM}${CONTRIB_PLATFORM_EXTRA}"
166 fi
167
168 # Compile
169 clang++ -std=c++17 -shared -fPIC \
170 -Wl,-no_compact_unwind -Wl,-framework,CoreFoundation \
171 -Wl,-framework,Security -Wl,-framework,VideoToolbox \
172 -Wl,-framework,CoreMedia -Wl,-framework,CoreVideo \
173 -Wl,-framework,OpenCl -Wl,-framework,Accelerate \
174 -Wl,-rpath,"\${ORIGIN}" \
175 -Wall -Wextra \
176 -Wno-unused-variable \
177 -Wno-unused-function \
178 -Wno-unused-parameter \
179 -D${PROCESSOR} \
180 -I"." \
181 -I"${DAEMON_SRC}" \
182 -I"${CONTRIB_PATH}/${CONTRIB_PLATFORM}${CONTRIB_PLATFORM_EXTRA}/include" \
183 -I"${CONTRIB_PATH}/${CONTRIB_PLATFORM}${CONTRIB_PLATFORM_EXTRA}/include/opencv4" \
184 -I"${ONNX_PATH}/include/onnxruntime/session" \
185 -I"${PLUGINS_LIB}" \
186 ./../lib/accel.cpp \
187 ./../lib/frameUtils.cpp \
188 ./../lib/frameFilter.cpp \
189 main.cpp \
190 videoSubscriber.cpp \
191 pluginMediaHandler.cpp \
192 pluginProcessor.cpp \
193 -L"${CONTRIB_PATH}/${CONTRIB_PLATFORM}${CONTRIB_PLATFORM_EXTRA}/lib/" \
194 -L"${CONTRIB_PATH}/${CONTRIB_PLATFORM}${CONTRIB_PLATFORM_EXTRA}/lib/opencv4/3rdparty/" \
195 -L"${ONNX_PATH}/lib/onnxruntime/${ONNX_LIBS}" \
196 -lavfilter \
197 -lswscale \
198 -lavformat \
199 -lavcodec \
200 -lavutil \
201 -lvpx -lx264 -lbz2 -liconv -lz \
202 -lopencv_imgproc \
203 -lopencv_core \
204 -lonnxruntime \
205 "/usr/local/opt/speex/lib/libspeex.a" \
206 "/usr/local/opt/opus/lib/libopus.a" \
207 -o "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
208
209 cp "${ONNX_PATH}/lib/onnxruntime/${ONNX_LIBS}/libonnxruntime.dylib" "build-local/jpl/lib/${CONTRIB_PLATFORM}/libonnxruntime.dylib"
210 install_name_tool -id "@loader_path/libonnxruntime.1.6.0.dylib" "build-local/jpl/lib/${CONTRIB_PLATFORM}/libonnxruntime.dylib"
211 install_name_tool -id "@loader_path/${SO_FILE_NAME}" "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
212 install_name_tool -change "@rpath/libonnxruntime.1.6.0.dylib" "@loader_path/libonnxruntime.dylib" "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
213
214 mkdir "./build-local/jpl/data/model"
215 cp "./modelSRC/mModel.onnx" "./build-local/jpl/data/model/mModel.onnx"
216 cp "./${PREFERENCESFILENAME}.json" "./build-local/jpl/data/preferences.json"
217
218 if [ -n "${APPLE_SIGN_CERTIFICATE}" ]; then
219 codesign --force --verify --timestamp -o runtime --sign "${APPLE_SIGN_CERTIFICATE}" "build-local/jpl/lib/${CONTRIB_PLATFORM}/libonnxruntime.dylib"
220 codesign --force --verify --timestamp -o runtime --sign "${APPLE_SIGN_CERTIFICATE}" "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
221 ditto -c -k --rsrc "build-local/jpl/lib/${CONTRIB_PLATFORM}/libonnxruntime.dylib" "build-local/libonnxruntime.dylib.zip"
222 LIBRARYNAME=libonnxruntime.dylib sh ./../notarize.sh
223 ditto -x -k "build-local/libonnxruntime.dylib.zip" "build-local/notarized0"
224 cp "build-local/notarized0/libonnxruntime.dylib" "build-local/jpl/lib/${CONTRIB_PLATFORM}/libonnxruntime.dylib"
225
226 ditto -c -k --rsrc "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}" "build-local/${SO_FILE_NAME}.zip"
227 LIBRARYNAME=${SO_FILE_NAME} sh ./../notarize.sh
228 ditto -x -k "build-local/${SO_FILE_NAME}.zip" "build-local/notarized1"
229 cp "build-local/notarized1/${SO_FILE_NAME}" "build-local/jpl/lib/${CONTRIB_PLATFORM}/${SO_FILE_NAME}"
230 fi
231
agsantos796b5af2020-12-22 19:38:27 -0500232elif [ "${PLATFORM}" = "android" ]
233then
234 python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM}
235
236 if [ -z "$ANDROID_NDK" ]; then
237 ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/21.1.6352462"
238 echo "ANDROID_NDK not provided, building with ${ANDROID_NDK}"
239 fi
240
241 #=========================================================
242 # Check if the ANDROID_ABI was provided
243 # if not, set default
244 #=========================================================
245 if [ -z "$ANDROID_ABI" ]; then
246 ANDROID_ABI="armeabi-v7a arm64-v8a x86_64"
247 echo "ANDROID_ABI not provided, building for ${ANDROID_ABI}"
248 fi
249
250 buildlib() {
251 echo "$CURRENT_ABI"
252
253 #=========================================================
254 # ANDROID TOOLS
255 #=========================================================
256 export HOST_TAG=linux-x86_64
257 export TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/$HOST_TAG
258
259 if [ "$CURRENT_ABI" = armeabi-v7a ]
260 then
agsantos7ad7a3a2021-01-19 12:57:54 -0500261 export AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar
262 export AS=$TOOLCHAIN/bin/arm-linux-androideabi-as
agsantos796b5af2020-12-22 19:38:27 -0500263 export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
264 export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
agsantos7ad7a3a2021-01-19 12:57:54 -0500265 export LD=$TOOLCHAIN/bin/arm-linux-androideabi-ld
266 export RANLIB=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib
agsantos796b5af2020-12-22 19:38:27 -0500267 export STRIP=$TOOLCHAIN/bin/arm-linux-androideabi-strip
268 export ANDROID_SYSROOT=${DAEMON}/../client-android/android-toolchain-21-arm/sysroot
269
270 elif [ "$CURRENT_ABI" = arm64-v8a ]
271 then
272 export AR=$TOOLCHAIN/bin/aarch64-linux-android-ar
273 export AS=$TOOLCHAIN/bin/aarch64-linux-android-as
274 export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
275 export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
276 export LD=$TOOLCHAIN/bin/aarch64-linux-android-ld
277 export RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib
278 export STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip
279 export ANDROID_SYSROOT=${DAEMON}/../client-android/android-toolchain-21-arm64/sysroot
280
281 elif [ "$CURRENT_ABI" = x86_64 ]
282 then
283 export AR=$TOOLCHAIN/bin/x86_64-linux-android-ar
284 export AS=$TOOLCHAIN/bin/x86_64-linux-android-as
285 export CC=$TOOLCHAIN/bin/x86_64-linux-android21-clang
286 export CXX=$TOOLCHAIN/bin/x86_64-linux-android21-clang++
287 export LD=$TOOLCHAIN/bin/x86_64-linux-android-ld
288 export RANLIB=$TOOLCHAIN/bin/x86_64-linux-android-ranlib
289 export STRIP=$TOOLCHAIN/bin/x86_64-linux-android-strip
290 export ANDROID_SYSROOT=${DAEMON}/../client-android/android-toolchain-21-x86_64/sysroot
291
292 else
293 echo "ABI NOT OK" >&2
294 exit 1
295 fi
296
297 #=========================================================
298 # CONTRIBS
299 #=========================================================
300 if [ "$CURRENT_ABI" = armeabi-v7a ]
301 then
302 CONTRIB_PLATFORM=arm-linux-androideabi
303
304 elif [ "$CURRENT_ABI" = arm64-v8a ]
305 then
306 CONTRIB_PLATFORM=aarch64-linux-android
307
308 elif [ "$CURRENT_ABI" = x86_64 ]
309 then
310 CONTRIB_PLATFORM=x86_64-linux-android
311 fi
312
313 #NDK SOURCES FOR cpufeatures
314 NDK_SOURCES=${ANDROID_NDK}/sources/android
315
316 #=========================================================
317 # LD_FLAGS
318 #=========================================================
319 if [ "$CURRENT_ABI" = armeabi-v7a ]
320 then
321 export EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${ANDROID_SYSROOT}/usr/lib/arm-linux-androideabi -L${ANDROID_SYSROOT}/usr/lib/arm-linux-androideabi/21"
322 elif [ "$CURRENT_ABI" = arm64-v8a ]
323 then
324 export EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${ANDROID_SYSROOT}/usr/lib/aarch64-linux-android -L${ANDROID_SYSROOT}/usr/lib/aarch64-linux-android/21"
325 elif [ "$CURRENT_ABI" = x86_64 ]
326 then
327 export EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${ANDROID_SYSROOT}/usr/lib/x86_64-linux-android -L${ANDROID_SYSROOT}/usr/lib/x86_64-linux-android/21"
328 fi
329
agsantosdd6a62a2021-03-29 17:13:27 -0400330 if [ -f "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg" ]; then
331 rm "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg"
332 fi
333
334 WORKPATH=$(pwd)
335 cd "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/"
336 make .ffmpeg -j$(nproc)
337 rm .ffmpeg
338 cd ${WORKPATH}
339
agsantos796b5af2020-12-22 19:38:27 -0500340 #=========================================================
341 # Compile CPU FEATURES, NEEDED FOR OPENCV
342 #=========================================================
343 $CC -c "$NDK_SOURCES/cpufeatures/cpu-features.c" -o cpu-features.o -o cpu-features.o --sysroot=$ANDROID_SYSROOT
344
345 #=========================================================
346 # Compile the plugin
347 #=========================================================
348
349 ONNX_PATH="${EXTRALIBS_PATH}/${CURRENT_ABI}"
350 if [ -z ${EXTRALIBS_PATH} ]
351 then
352 ONNX_PATH="${CONTRIB_PATH}/${CONTRIB_PLATFORM}"
353 fi
354
355 # Create so destination folder
356 $CXX --std=c++17 -O3 -g -fPIC \
agsantosac1940d2020-09-17 10:18:40 -0400357 -Wl,-Bsymbolic,-rpath,"\${ORIGIN}" \
agsantos796b5af2020-12-22 19:38:27 -0500358 -shared \
agsantosac1940d2020-09-17 10:18:40 -0400359 -Wall -Wextra \
360 -Wno-unused-variable \
361 -Wno-unused-function \
362 -Wno-unused-parameter \
agsantos796b5af2020-12-22 19:38:27 -0500363 -DANDROID \
agsantosac1940d2020-09-17 10:18:40 -0400364 -I"." \
365 -I"${DAEMON_SRC}" \
366 -I"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/include" \
367 -I"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/include/opencv4" \
agsantos796b5af2020-12-22 19:38:27 -0500368 -I"${ONNX_PATH}/include/onnxruntime/session" \
369 -I"${ONNX_PATH}/include/onnxruntime/providers/nnapi" \
370 -I"${ONNX_PATH}/../include/onnxruntime/session" \
371 -I"${ONNX_PATH}/../include/onnxruntime/providers/nnapi" \
agsantosac1940d2020-09-17 10:18:40 -0400372 -I"${PLUGINS_LIB}" \
agsantos1e7736c2020-10-28 14:39:13 -0400373 ./../lib/accel.cpp \
agsantosc9181b42020-11-26 12:03:04 -0500374 ./../lib/frameUtils.cpp \
agsantosdd6a62a2021-03-29 17:13:27 -0400375 ./../lib/frameFilter.cpp \
agsantosc9181b42020-11-26 12:03:04 -0500376 main.cpp \
agsantos796b5af2020-12-22 19:38:27 -0500377 videoSubscriber.cpp \
378 pluginMediaHandler.cpp \
379 pluginProcessor.cpp \
380 cpu-features.o \
agsantosac1940d2020-09-17 10:18:40 -0400381 -L"${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/" \
agsantos796b5af2020-12-22 19:38:27 -0500382 -L"${ONNX_PATH}/lib/" \
agsantosdd6a62a2021-03-29 17:13:27 -0400383 -lavfilter \
agsantos796b5af2020-12-22 19:38:27 -0500384 -lswscale \
agsantosdd6a62a2021-03-29 17:13:27 -0400385 -lavformat \
386 -lavcodec \
agsantos796b5af2020-12-22 19:38:27 -0500387 -lavutil \
agsantosdd6a62a2021-03-29 17:13:27 -0400388 -lvpx \
389 -lx264 \
390 -lspeex \
391 -lopus \
392 -liconv \
agsantosac1940d2020-09-17 10:18:40 -0400393 -lopencv_imgproc \
394 -lopencv_core \
agsantos796b5af2020-12-22 19:38:27 -0500395 -llog -lz \
396 -lonnxruntime \
397 --sysroot=$ANDROID_SYSROOT \
398 -o "build-local/jpl/lib/$CURRENT_ABI/${SO_FILE_NAME}"
agsantosac1940d2020-09-17 10:18:40 -0400399
agsantos796b5af2020-12-22 19:38:27 -0500400 rm cpu-features.o
401 cp "${ONNX_PATH}/lib/libonnxruntime.so" "build-local/jpl/lib/${CURRENT_ABI}/libonnxruntime.so"
402 }
agsantosac1940d2020-09-17 10:18:40 -0400403
agsantos796b5af2020-12-22 19:38:27 -0500404 # Build the so
405 for i in ${ANDROID_ABI}; do
406 CURRENT_ABI=$i
407 buildlib
408 done
agsantosac1940d2020-09-17 10:18:40 -0400409
agsantos796b5af2020-12-22 19:38:27 -0500410 mkdir "./build-local/jpl/data/model"
411 cp "./modelSRC/mModel.ort" "./build-local/jpl/data/model/mModel.ort"
agsantos2c8525e2021-03-19 11:18:01 -0400412 cp "./${PREFERENCESFILENAME}-accel.json" "./build-local/jpl/data/preferences.json"
agsantosac1940d2020-09-17 10:18:40 -0400413fi
agsantos5aa39652020-08-11 18:18:04 -0400414
agsantos796b5af2020-12-22 19:38:27 -0500415python3 ./../SDK/jplManipulation.py --assemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM} --extraPath=${ONNX_LIBS}
agsantosdd6a62a2021-03-29 17:13:27 -0400416cd ${CONTRIB_PATH}/src/ffmpeg/
417# ffmpeg build configuration files were changed during plugin build
418# this git checkout will remove these changes
419git checkout -- .