mv_3d: bug fix
[platform/core/api/mediavision.git] / packaging / capi-media-vision.spec
1 Name:        capi-media-vision
2 Summary:     Media Vision library for Tizen Native API
3 Version:     0.27.14
4 Release:     0
5 Group:       Multimedia/Framework
6 License:     Apache-2.0 and BSD-3-Clause
7 Source0:     %{name}-%{version}.tar.gz
8 BuildRequires: cmake
9 BuildRequires: pkgconfig(capi-media-tool)
10 BuildRequires: pkgconfig(dlog)
11 BuildRequires: pkgconfig(capi-system-info)
12 BuildRequires: pkgconfig(opencv)
13 BuildRequires: pkgconfig(json-glib-1.0)
14 BuildRequires: pkgconfig(iniparser)
15 BuildRequires: pkgconfig(inference-engine-interface-common)
16 %if !0%{?ml_only:1}
17 BuildRequires: pkgconfig(glib-2.0)
18 BuildRequires: pkgconfig(zbar)
19 # Change to the pkgconfig(zint) after zint package refactor
20 BuildRequires: zint
21 BuildRequires: zint-devel
22 BuildRequires: pkgconfig(libavcodec)
23 BuildRequires: pkgconfig(libavformat)
24 BuildRequires: pkgconfig(libswscale)
25 BuildRequires: libavutil-devel
26 BuildRequires: pkgconfig(gstreamer-1.0)
27 BuildRequires: pkgconfig(gstreamer-base-1.0)
28 BuildRequires: pkgconfig(gstreamer-app-1.0)
29 BuildRequires: pkgconfig(libtzplatform-config)
30 BuildRequires: pkgconfig(ncurses)
31 BuildRequires: pkgconfig(libdrm)
32 BuildRequires: pkgconfig(wayland-egl)
33 BuildRequires: pkgconfig(glesv2)
34 BuildRequires: gtest-devel
35 BuildRequires: pkgconfig(dfs-adaptation)
36 %if 0%{?visualizer:1}
37 BuildRequires: pkgconfig(protobuf)
38 BuildRequires: pkgconfig(grpc++)
39 %endif
40 %endif
41
42 # Build options
43 # ENABLE_INFERENCE_PROFILER
44 # 0 : disable Mediavision inference engine profiler, 1 : enable Mediavision inference engine profiler.
45 %define enable_mv3d_pointcloud 0
46 %if "%{tizen_profile_name}" == "tv"
47 %define enable_ml_face_recognition 0
48 %define build_depth_stream_testsuite 0
49 %else
50 %define enable_ml_face_recognition 1
51 BuildRequires: pkgconfig(training-engine-interface-common)
52 Requires:      training-engine-interface-common
53
54 %define enable_ml_image_classification 1
55 %define enable_ml_object_detection 1
56 %define enable_ml_object_detection_3d 1
57
58 %define build_depth_stream_testsuite 1
59 BuildRequires: pkgconfig(vision-source)
60 %ifarch aarch64
61 %define enable_mv3d_pointcloud 1
62 BuildRequires: Open3D-devel
63 %endif
64 %endif
65 %define build_options -DENABLE_INFERENCE_PROFILER=0 -DBUILD_DEPTH_STREAM_TESTSUITE=%{build_depth_stream_testsuite} -DMV_3D_POINTCLOUD_IS_AVAILABLE=%{enable_mv3d_pointcloud}
66 %define task_group_options -DENABLE_ML_FACE_RECOGNITION=%{enable_ml_face_recognition} -DENABLE_ML_IMAGE_CLASSIFICATION=%{enable_ml_image_classification} -DENABLE_ML_OBJECT_DETECTION=%{enable_ml_object_detection} -DENABLE_ML_OBJECT_DETECTION_3D=%{enable_ml_object_detection_3d}
67 Requires:   %{name}-machine_learning
68 Requires:   inference-engine-interface-common
69 %if !0%{?ml_only:1}
70 Requires:   %{name}-barcode
71 Requires:   %{name}-face
72 Requires:   %{name}-image
73 Requires:   %{name}-surveillance
74 Requires:   %{name}-3d
75 Requires:   %{name}-roi_tracker
76 %endif
77
78 %description
79 Media Vision library for Tizen Native API. Includes barcode detecting, barcode generating, face and image modules.
80
81 %if !0%{?ml_only:1}
82 %package devel
83 Summary:    Multimedia Vision Library (DEV)
84 Group:      Multimedia/Framework
85 Requires:   %{name} = %{version}-%{release}
86 Requires:   %{name}-barcode-devel
87 Requires:   %{name}-face-devel
88 Requires:   %{name}-image-devel
89 Requires:   %{name}-machine_learning-devel
90 Requires:   %{name}-surveillance-devel
91 Requires:   %{name}-3d-devel
92 Requires:   %{name}-roi_tracker-devel
93
94 %description devel
95 Media Vision library for Tizen Native API (DEV). Includes barcode detecting, barcode generating, face and image modules.
96 %endif
97
98 %if 0%{?gcov:1}
99 %package gcov
100 Summary: Line Coverage of Media Vision library for Tizen Native API
101 Group: Development/Multimedia
102
103 %description gcov
104 Collection of files related to Line Coverage. It is teseted as gcov for a Media Vision for Tizen Native API
105 %endif
106
107 %package common
108 Summary:    Multimedia Vision common Library
109 Group:      Multimedia/Framework
110
111 %description common
112 Media Vision common library for Tizen Native API.
113
114 %package common-devel
115 Summary:    Multimedia Vision common Library
116 Group:      Multimedia/Framework
117 Requires:   %{name}-common
118
119 %description common-devel
120 Media Vision common library for Tizen Native API (DEV).
121
122 %if !0%{?ml_only:1}
123 %package barcode
124 Summary:    Multimedia Vision Barcode Library
125 Group:      Multimedia/Framework
126 Requires:   %{name}-common
127
128 %description barcode
129 Media Vision barcode library for Tizen Native API.
130
131 %package barcode-devel
132 Summary:    Multimedia Vision Barcode Library
133 Group:      Multimedia/Framework
134 Requires:   %{name}-barcode
135 Requires:   %{name}-common-devel
136
137 %description barcode-devel
138 Media Vision barcode library for Tizen Native API (DEV).
139
140 %package face
141 Summary:    Multimedia Vision Library
142 Group:      Multimedia/Framework
143 Requires:   %{name}-common
144
145 %description face
146 Media Vision face library for Tizen Native API.
147
148 %package face-devel
149 Summary:    Multimedia Vision Face Library (DEV)
150 Group:      Multimedia/Framework
151 Requires:   %{name}-face
152 Requires:   %{name}-common-devel
153
154 %description face-devel
155 Media Vision face library for Tizen Native API (DEV).
156
157 %package image
158 Summary:    Multimedia Vision Image Library
159 Group:      Multimedia/Framework
160 Requires:   %{name}-common
161
162 %description image
163 Media Vision Image library for Tizen Native API.
164
165 %package image-devel
166 Summary:    Multimedia Vision Image Library
167 Group:      Multimedia/Framework
168 Requires:   %{name}-image
169 Requires:   %{name}-common-devel
170
171 %description image-devel
172 Media Vision Image library for Tizen Native API (DEV).
173
174 %package surveillance
175 Summary:    Multimedia Vision Surveillance Library
176 Group:      Multimedia/Framework
177 Requires:   %{name}-face
178
179 %description surveillance
180 Media Vision Surveillance library for Tizen Native API.
181
182 %package surveillance-devel
183 Summary:    Multimedia Vision Surveillance Library
184 Group:      Multimedia/Framework
185 Requires:   %{name}-surveillance
186 Requires:   %{name}-common-devel
187
188 %description surveillance-devel
189 Media Vision Surveillance library for Tizen Native API (DEV).
190
191 %package 3d
192 Summary:    Multimedia Vision 3d Library
193 Group:      Multimedia/Framework
194 Requires:   %{name}-common
195
196 %description 3d
197 Media Vision 3d library for Tizen Native API.
198
199 %package 3d-devel
200 Summary:    Multimedia Vision 3d Library
201 Group:      Multimedia/Framework
202 Requires:   %{name}-3d
203 Requires:   %{name}-common-devel
204
205 %description 3d-devel
206 Media Vision 3d library for Tizen Native API (DEV).
207 %endif
208
209 %package machine_learning
210 Summary:    Multimedia Vision Machine Learning Library
211 Group:      Multimedia/Framework
212 Requires:   %{name}-common
213
214 %description machine_learning
215 Media Vision Machine Learning library for Tizen Native API.
216
217 %package machine_learning-devel
218 Summary:    Multimedia Vision Machine Learning Library
219 Group:      Multimedia/Framework
220 Requires:   %{name}-machine_learning
221 Requires:   %{name}-common-devel
222
223 %description machine_learning-devel
224 Media Vision Machine Learning library for Tizen Native API (DEV).
225
226
227 %package roi_tracker
228 Summary:    Multimedia Vision Library
229 Group:      Multimedia/Framework
230 Requires:   %{name}-common
231
232 %description roi_tracker
233 Media Vision roi tracker library for Tizen Native API.
234
235 %package roi_tracker-devel
236 Summary:    Multimedia Vision ROI Tracker Library (DEV)
237 Group:      Multimedia/Framework
238 Requires:   %{name}-roi_tracker
239 Requires:   %{name}-common-devel
240
241 %description roi_tracker-devel
242 Media Vision roi_tracker library for Tizen Native API (DEV).
243
244
245 %if !0%{?ml_only:1}
246 %package unittests
247 Summary:    Multimedia Vision Test Suite
248 Group:      Multimedia/Framework
249 Requires:   %{name}-barcode
250 Requires:   %{name}-face
251 Requires:   %{name}-image
252 Requires:   %{name}-surveillance
253 Requires:   %{name}-machine_learning
254 Requires:   %{name}-3d
255 Requires:   %{name}-roi_tracker
256 Requires:   check
257
258 %description unittests
259 Media Vision Test Suite.
260 %endif
261
262 %prep
263 %setup -q
264
265 %build
266 %if 0%{?sec_build_binary_debug_enable}
267 export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
268 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
269 export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
270 %endif
271
272 export CFLAGS+=" -DSYSCONFDIR=\\\"%{_hal_sysconfdir}\\\""
273 export CXXFLAGS+=" -DSYSCONFDIR=\\\"%{_hal_sysconfdir}\\\""
274
275 export CFLAGS+=" -DMV_CONFIG_PATH=\\\"%{TZ_SYS_RO_SHARE}/%{name}/\\\""
276 export CXXFLAGS+=" -DMV_CONFIG_PATH=\\\"%{TZ_SYS_RO_SHARE}/%{name}/\\\""
277
278 %if 0%{?gcov:1}
279 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
280 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
281 export FFLAGS+=" -fprofile-arcs -ftest-coverage"
282 export LDFLAGS+=" -lgcov"
283 %endif
284
285 %cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo %{build_options} %{task_group_options} \
286  -DTEST_RES_PATH="%{TZ_SYS_HOME}/%{TZ_SYS_DEFAULT_USER}/media/Others/mv_test" \
287 %if 0%{?ml_only:1}
288  -DBUILD_ML_ONLY=ON \
289 %endif
290 %if 0%{?visualizer:1}
291  -DBUILD_VISUALIZER=ON \
292 %endif
293 %ifarch %arm aarch64
294 -DENABLE_NEON=ON
295 %endif
296
297 make %{?jobs:-j%jobs}
298
299 %install
300
301 cat << EOF > run-unittest.sh
302 #!/bin/bash
303 setup() {
304     echo "setup start"
305     mkdir /opt/usr/home/owner/media/Others/mv_test
306     pushd /opt/media/USBDriveA1/mv_test
307     tar -xzvf mv_test.tar.gz -C /opt/usr/home/owner/media/Others/mv_test
308     tar -xzvf open_model_zoo.tar.gz -C /opt/usr/home/owner/media/Others/mv_test/open_model_zoo
309     bash /opt/usr/home/owner/media/Others/mv_test/post_install_on_target.sh
310     popd
311 }
312
313 test_main() {
314     echo "test_main start"
315     /usr/bin/mv_test --gtest_filter=-*TestPoseLandmarkDetectionTflite.MobilenetV1*
316 %if "%{enable_ml_face_recognition}" == "1"
317     /usr/bin/test_face_recognition
318 %endif
319 %if "%{enable_ml_image_classification}" == "1"
320     /usr/bin/test_image_classification
321 %endif
322 %if "%{enable_ml_object_detection}" == "1"
323     /usr/bin/test_object_detection
324 %endif
325 %if "%{enable_ml_object_detection_3d}" == "1"
326     /usr/bin/test_object_detection_3d
327 %endif
328 }
329
330 teardown() {
331     echo "teardown start"
332     rm -rf /opt/usr/home/owner/media/Others/mv_test
333 }
334
335 main() {
336     setup
337     test_main
338     teardown
339 }
340
341 main "$@"
342 EOF
343
344 mkdir -p %{buildroot}%{_bindir}/tizen-unittests/%{name}
345 install -m 0755 run-unittest.sh %{buildroot}%{_bindir}/tizen-unittests/%{name}
346
347 %make_install
348
349 %if 0%{?gcov:1}
350 builddir=$(basename $PWD)
351 gcno_obj_dir=%{buildroot}%{_datadir}/gcov/obj/%{name}/"$builddir"
352 mkdir -p "$gcno_obj_dir"
353 find . -name '*.gcno' -not -path "./test/*" -exec cp --parents '{}' "$gcno_obj_dir" ';'
354 %endif
355
356 %post -p /sbin/ldconfig
357 %postun -p /sbin/ldconfig
358
359 %files
360 %manifest %{name}.manifest
361 %license LICENSE.APLv2 LICENSE.BSD-3-Clause
362
363 %if !0%{?ml_only:1}
364 %files devel
365 %{_libdir}/pkgconfig/%{name}.pc
366 %endif
367
368 %files common
369 %manifest %{name}.manifest
370 %license LICENSE.APLv2 LICENSE.BSD-3-Clause
371 %{_datadir}/%{name}/media-vision-config.json
372 %{_libdir}/libmv_common*.so
373
374 %files common-devel
375 %{_includedir}/media/mv_common.h
376 %{_libdir}/pkgconfig/*common.pc
377
378 %if !0%{?ml_only:1}
379 %files barcode
380 %manifest %{name}.manifest
381 %license LICENSE.APLv2 LICENSE.BSD-3-Clause
382 %{_libdir}/libmv_barcode*.so
383
384 %files barcode-devel
385 %{_includedir}/media/mv_barcode*.h
386 %{_libdir}/pkgconfig/*barcode.pc
387
388 %files face
389 %manifest %{name}.manifest
390 %license LICENSE.APLv2 LICENSE.BSD-3-Clause
391 %{_libdir}/libmv_face*.so
392
393 %files face-devel
394 %{_includedir}/media/mv_face*.h
395 %{_libdir}/pkgconfig/*face.pc
396
397 %files image
398 %manifest %{name}.manifest
399 %license LICENSE.APLv2 LICENSE.BSD-3-Clause
400 %{_libdir}/libmv_image.so
401
402 %files image-devel
403 %{_includedir}/media/mv_image*.h
404 %{_libdir}/pkgconfig/*image.pc
405
406 %files surveillance
407 %manifest %{name}.manifest
408 %license LICENSE.APLv2 LICENSE.BSD-3-Clause
409 %{_libdir}/libmv_surveillance*.so
410
411 %files surveillance-devel
412 %{_includedir}/media/mv_surveillance*.h
413 %{_libdir}/pkgconfig/*surveillance.pc
414
415 %files 3d
416 %manifest %{name}.manifest
417 %license LICENSE.APLv2 LICENSE.BSD-3-Clause
418 %{_libdir}/libmv_3d*.so
419
420 %files 3d-devel
421 %{_includedir}/media/mv_3d.h
422 %{_includedir}/media/mv_3d_type.h
423 %{_includedir}/media/mv_3d_internal.h
424 %{_includedir}/media/mv_3d_private.h
425 %{_libdir}/pkgconfig/*3d.pc
426 %endif
427
428 %files machine_learning
429 %manifest %{name}.manifest
430 %license LICENSE.APLv2 LICENSE.BSD-3-Clause
431 %{_libdir}/libmv_inference*.so
432 %if "%{enable_ml_face_recognition}" == "1"
433 %{_datadir}/%{name}/face_recognition.json
434 %{_libdir}/libmv_training.so
435 %{_libdir}/libmv_face_recognition.so
436 %endif
437 %if "%{enable_ml_image_classification}" == "1"
438 %{_datadir}/%{name}/image_classification.json
439 %{_libdir}/libmv_image_classification.so
440 %endif
441 %if "%{enable_ml_object_detection}" == "1"
442 %{_datadir}/%{name}/object_detection.json
443 %{_datadir}/%{name}/face_detection.json
444 %{_libdir}/libmv_object_detection.so
445 %endif
446 %if "%{enable_ml_object_detection_3d}" == "1"
447 %{_datadir}/%{name}/object_detection_3d.json
448 %{_libdir}/libmv_object_detection_3d.so
449 %endif
450
451 %files machine_learning-devel
452 %{_includedir}/media/mv_infer*.h
453 %{_libdir}/pkgconfig/*inference.pc
454 %if "%{enable_ml_face_recognition}" == "1"
455 %{_includedir}/media/mv_face_recognition*.h
456 %{_libdir}/pkgconfig/*training.pc
457 %{_libdir}/pkgconfig/*face-recognition.pc
458 %endif
459 %if "%{enable_ml_image_classification}" == "1"
460 %{_includedir}/media/mv_image_classification_internal.h
461 %{_includedir}/media/mv_image_classification_type.h
462 %{_libdir}/pkgconfig/*image-classification.pc
463 %endif
464 %if "%{enable_ml_object_detection}" == "1"
465 %{_includedir}/media/mv_object_detection_internal.h
466 %{_includedir}/media/mv_object_detection_type.h
467 %{_libdir}/pkgconfig/*object-detection.pc
468 %endif
469 %if "%{enable_ml_object_detection_3d}" == "1"
470 %{_includedir}/media/mv_object_detection_3d_internal.h
471 %{_includedir}/media/mv_object_detection_3d_type.h
472 %{_libdir}/pkgconfig/*object-detection-3d.pc
473 %endif
474
475 %files roi_tracker
476 %manifest %{name}.manifest
477 %license LICENSE.APLv2 LICENSE.BSD-3-Clause
478 %{_libdir}/libmv_roi_tracker.so
479
480 %files roi_tracker-devel
481 %{_includedir}/media/mv_roi_tracker*.h
482 %{_libdir}/pkgconfig/*tracker.pc
483
484
485 %if !0%{?ml_only:1}
486 %files unittests
487 %manifest %{name}.manifest
488 %license LICENSE.APLv2 LICENSE.BSD-3-Clause
489 %{_libdir}/libmv_*helper.so
490 %if 0%{?visualizer:1}
491 %{_libdir}/libmv_visualizer.so
492 %endif
493 %{_libdir}/libmv_testsuite*.so
494 %{_bindir}/mv_*
495 %if "%{enable_ml_face_recognition}" == "1"
496 %{_bindir}/test_face_recognition
497 %{_bindir}/test_face_recognition_multi_threads
498 %{_bindir}/measure_face_recognition
499 %endif
500 %if "%{enable_ml_image_classification}" == "1"
501 %{_bindir}/test_image_classification
502 %endif
503 %if "%{enable_ml_object_detection}" == "1"
504 %{_bindir}/test_object_detection
505 %endif
506 %if "%{enable_ml_object_detection_3d}" == "1"
507 %{_bindir}/test_object_detection_3d
508 %endif
509 %{_bindir}/tizen-unittests/%{name}/run-unittest.sh
510 %endif
511
512 %if 0%{?gcov:1}
513 %files gcov
514 %{_datadir}/gcov/obj/*
515 %endif