From: Inki Dae Date: Wed, 27 Jul 2022 07:39:08 +0000 (+0900) Subject: [UTC][media-vision][ACR-1700] add utc for face recognition X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fe454b89865b18a2295bb5299c3089cf456980e5;p=test%2Ftct%2Fnative%2Fapi.git [UTC][media-vision][ACR-1700] add utc for face recognition Change-Id: I9114122a6e8c9c35c8c10b987c68bb6627256604 Signed-off-by: Inki Dae --- diff --git a/packaging/utc/core-capi-media-vision-tests.spec b/packaging/utc/core-capi-media-vision-tests.spec index afe67fa15..d66477099 100755 --- a/packaging/utc/core-capi-media-vision-tests.spec +++ b/packaging/utc/core-capi-media-vision-tests.spec @@ -122,6 +122,12 @@ cp src/utc/capi-media-vision/res/inference/images/* %{buildroot}%{APP_PATH}%{nam mkdir -p %{buildroot}%{APP_PATH}%{name}/data/res/roi_tracker/ cp src/utc/capi-media-vision/res/roi_tracker/* %{buildroot}%{APP_PATH}%{name}/data/res/roi_tracker/ + +mkdir -p %{buildroot}%{APP_PATH}%{name}/data/res/face_recognition/models +mkdir -p %{buildroot}%{APP_PATH}%{name}/data/res/face_recognition/images +cp src/utc/capi-media-vision/res/face_recognition/models/* %{buildroot}%{APP_PATH}%{name}/data/res/face_recognition/models/ +cp src/utc/capi-media-vision/res/face_recognition/images/* %{buildroot}%{APP_PATH}%{name}/data/res/face_recognition/images/ + %post %postun diff --git a/scripts_tpk/spec.sh b/scripts_tpk/spec.sh index a91687ec0..a9dab9ecd 100755 --- a/scripts_tpk/spec.sh +++ b/scripts_tpk/spec.sh @@ -837,30 +837,59 @@ case "$1" in chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/surv/* chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/surv/* - + mkdir -p $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker + cp res/roi_tracker/* $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker/ + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker/* + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker/* mkdir -p $DEVICE_PHYSICAL_STORAGE_30/res/inference/models mkdir -p $DEVICE_PHYSICAL_STORAGE_30/res/inference/images - mkdir -p $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference/models chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference/models chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference/images chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference/images - chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker - chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker cp res/inference/models/* $DEVICE_PHYSICAL_STORAGE_30/res/inference/models/ cp res/inference/images/* $DEVICE_PHYSICAL_STORAGE_30/res/inference/images/ - cp res/roi_tracker/* $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker/ chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference/* chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference/* chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference/models/* chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference/models/* chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference/images/* chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/inference/images/* - chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker/* - chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/roi_tracker/* + + mkdir -p $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/training/ + mkdir -p $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/backbone/ + mkdir -p $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P1 + mkdir -p $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P2 + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/training + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/training + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/backbone + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/backbone + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P1 + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P1 + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P2 + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P2 + cp res/face_recognition/models/* $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/backbone/ + cp res/face_recognition/images/P1/* $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P1/ + cp res/face_recognition/images/P2/* $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P2/ + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/* + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/* + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/backbone/* + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/backbone/* + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/* + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/* + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P1/* + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P1/* + chsmack -a "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P2/* + chsmack -e "User::App::Shared" $DEVICE_PHYSICAL_STORAGE_30/res/face_recognition/images/P2/* ;; "org.tizen.capi-message-port-native-utc") echo "Installing pre-requisites for the package $1" @@ -1018,4 +1047,4 @@ case "$1" in ;; esac -##UEP630x36d2205b5a37f64ccfd9d5852a47c792cf7b1be9dc10a72c0a339b740a6c19d34dca8fdbff1c45e56fb78c5460dc55fa7ced98b3e2c76ddff29f75f6cbff037844b84e75aff67faf7063ffb12ba75b175dd96ecdd626c1d6dead49c926fa94e0e45c175e2460663a7ed78e45e5b20c0658965a5d3bd0783594376d0b37e5ddd210a7b9b4b286fc1f5cc0203f93a68b650c9ca2bf959cd9c512e4f47e48c96f5b32e704fccb042ccfa0281dc9202a3c9bffb2d045bd11e4a120c8349f81172975e96b09a14304523716e8a870533acadd262030d0a0e4346fe5d1b44c576f39e046d74f8d6506151db9aac97561208a4798954246ef51e8b234ceba009f63e4eaAAACAg==:UEP \ No newline at end of file +##UEP630x36d2205b5a37f64ccfd9d5852a47c792cf7b1be9dc10a72c0a339b740a6c19d34dca8fdbff1c45e56fb78c5460dc55fa7ced98b3e2c76ddff29f75f6cbff037844b84e75aff67faf7063ffb12ba75b175dd96ecdd626c1d6dead49c926fa94e0e45c175e2460663a7ed78e45e5b20c0658965a5d3bd0783594376d0b37e5ddd210a7b9b4b286fc1f5cc0203f93a68b650c9ca2bf959cd9c512e4f47e48c96f5b32e704fccb042ccfa0281dc9202a3c9bffb2d045bd11e4a120c8349f81172975e96b09a14304523716e8a870533acadd262030d0a0e4346fe5d1b44c576f39e046d74f8d6506151db9aac97561208a4798954246ef51e8b234ceba009f63e4eaAAACAg==:UEP diff --git a/src/utc/capi-media-vision/CMakeLists.txt b/src/utc/capi-media-vision/CMakeLists.txt index b917658c9..cbff4c29d 100644 --- a/src/utc/capi-media-vision/CMakeLists.txt +++ b/src/utc/capi-media-vision/CMakeLists.txt @@ -12,6 +12,7 @@ SET(TC_SOURCES utc-mv_surveillance.c utc-mv_inference.c utc-mv_roi_tracker.c + utc-mv_face_recognition.c ) PKG_CHECK_MODULES(${CAPI_LIB} REQUIRED diff --git a/src/utc/capi-media-vision/public.list b/src/utc/capi-media-vision/public.list index 645b467cb..d4570901b 100755 --- a/src/utc/capi-media-vision/public.list +++ b/src/utc/capi-media-vision/public.list @@ -91,4 +91,10 @@ mv_roi_tracker_create mv_roi_tracker_destroy mv_roi_tracker_configure mv_roi_tracker_prepare -mv_roi_tracker_perform \ No newline at end of file +mv_roi_tracker_perform +mv_face_recognition_create +mv_face_recognition_destroy +mv_face_recognition_prepare +mv_face_recognition_register +mv_face_recognition_unregister +mv_face_recognition_get_label diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P1/00.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P1/00.jpg new file mode 100755 index 000000000..3fa77e149 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P1/00.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P1/01.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P1/01.jpg new file mode 100755 index 000000000..f2b27bad7 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P1/01.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P1/02.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P1/02.jpg new file mode 100755 index 000000000..27bf5f06d Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P1/02.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P1/03.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P1/03.jpg new file mode 100755 index 000000000..3a317ada9 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P1/03.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P1/04.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P1/04.jpg new file mode 100755 index 000000000..5b3f8c6d8 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P1/04.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P1/05.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P1/05.jpg new file mode 100755 index 000000000..bedc5f144 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P1/05.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P1/06.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P1/06.jpg new file mode 100755 index 000000000..180173a5b Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P1/06.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P1/07.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P1/07.jpg new file mode 100755 index 000000000..70a0f9d50 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P1/07.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P1/08.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P1/08.jpg new file mode 100755 index 000000000..c6556a489 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P1/08.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P1/09.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P1/09.jpg new file mode 100755 index 000000000..4b510dbf9 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P1/09.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P2/00.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P2/00.jpg new file mode 100755 index 000000000..54be03045 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P2/00.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P2/01.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P2/01.jpg new file mode 100755 index 000000000..aa869358a Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P2/01.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P2/02.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P2/02.jpg new file mode 100755 index 000000000..865034994 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P2/02.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P2/03.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P2/03.jpg new file mode 100755 index 000000000..1f8f4698e Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P2/03.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P2/04.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P2/04.jpg new file mode 100755 index 000000000..5a6837251 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P2/04.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P2/05.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P2/05.jpg new file mode 100755 index 000000000..8e1300f9f Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P2/05.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P2/06.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P2/06.jpg new file mode 100755 index 000000000..b50791871 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P2/06.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P2/07.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P2/07.jpg new file mode 100755 index 000000000..78d1e06d5 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P2/07.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P2/08.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P2/08.jpg new file mode 100755 index 000000000..1989d27c3 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P2/08.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/images/P2/09.jpg b/src/utc/capi-media-vision/res/face_recognition/images/P2/09.jpg new file mode 100755 index 000000000..5d8288c57 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/images/P2/09.jpg differ diff --git a/src/utc/capi-media-vision/res/face_recognition/models/facenet.tflite b/src/utc/capi-media-vision/res/face_recognition/models/facenet.tflite new file mode 100644 index 000000000..4c1947783 Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/models/facenet.tflite differ diff --git a/src/utc/capi-media-vision/tct-capi-media-vision-core_mobile.h b/src/utc/capi-media-vision/tct-capi-media-vision-core_mobile.h index bf5d5be1c..0de7d1a83 100755 --- a/src/utc/capi-media-vision/tct-capi-media-vision-core_mobile.h +++ b/src/utc/capi-media-vision/tct-capi-media-vision-core_mobile.h @@ -43,6 +43,8 @@ extern void utc_capi_media_vision_inference_pose_landmark_detect_cb4_startup(voi extern void utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup(void); extern void utc_capi_media_vision_roi_tracker_startup(void); extern void utc_capi_media_vision_roi_tracker_cleanup(void); +extern void utc_capi_media_vision_face_recognition_startup(void); +extern void utc_capi_media_vision_face_recognition_cleanup(void); extern int utc_mediavision_mv_create_source_p(void); extern int utc_mediavision_mv_create_source_n(void); @@ -258,6 +260,25 @@ extern int utc_mediavision_mv_roi_tracker_prepare_p(void); extern int utc_mediavision_mv_roi_tracker_prepare_n(void); extern int utc_mediavision_mv_roi_tracker_perform_p(void); extern int utc_mediavision_mv_roi_tracker_perform_n(void); +extern int utc_mediavision_mv_face_recognition_create_p(void); +extern int utc_mediavision_mv_face_recognition_create_n(void); +extern int utc_mediavision_mv_face_recognition_destroy_p(void); +extern int utc_mediavision_mv_face_recognition_destroy_n(void); +extern int utc_mediavision_mv_face_recognition_prepare_p(void); +extern int utc_mediavision_mv_face_recognition_prepare_n(void); +extern int utc_mediavision_mv_face_recognition_register_p(void); +extern int utc_mediavision_mv_face_recognition_register_n1(void); +extern int utc_mediavision_mv_face_recognition_register_n2(void); +extern int utc_mediavision_mv_face_recognition_register_n3(void); +extern int utc_mediavision_mv_face_recognition_inference_p(void); +extern int utc_mediavision_mv_face_recognition_inference_n1(void); +extern int utc_mediavision_mv_face_recognition_inference_n2(void); +extern int utc_mediavision_mv_face_recognition_get_label_p(void); +extern int utc_mediavision_mv_face_recognition_get_label_n1(void); +extern int utc_mediavision_mv_face_recognition_get_label_n2(void); +extern int utc_mediavision_mv_face_recognition_unregister_p(void); +extern int utc_mediavision_mv_face_recognition_unregister_n1(void); +extern int utc_mediavision_mv_face_recognition_unregister_n2(void); testcase tc_array[] = { {"utc_mediavision_mv_create_source_p",utc_mediavision_mv_create_source_p,utc_capi_media_vision_common_startup,utc_capi_media_vision_common_cleanup}, @@ -474,6 +495,25 @@ testcase tc_array[] = { {"utc_mediavision_mv_roi_tracker_prepare_n", utc_mediavision_mv_roi_tracker_prepare_n,utc_capi_media_vision_roi_tracker_startup,utc_capi_media_vision_roi_tracker_cleanup}, {"utc_mediavision_mv_roi_tracker_perform_p", utc_mediavision_mv_roi_tracker_perform_p,utc_capi_media_vision_roi_tracker_startup,utc_capi_media_vision_roi_tracker_cleanup}, {"utc_mediavision_mv_roi_tracker_perform_n", utc_mediavision_mv_roi_tracker_perform_n,utc_capi_media_vision_roi_tracker_startup,utc_capi_media_vision_roi_tracker_cleanup}, + {"utc_mediavision_mv_face_recognition_create_p", utc_mediavision_mv_face_recognition_create_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_create_n", utc_mediavision_mv_face_recognition_create_n,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_destroy_p", utc_mediavision_mv_face_recognition_destroy_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_destroy_n", utc_mediavision_mv_face_recognition_destroy_n,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_prepare_p", utc_mediavision_mv_face_recognition_prepare_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_prepare_n", utc_mediavision_mv_face_recognition_prepare_n,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_p", utc_mediavision_mv_face_recognition_register_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_n1", utc_mediavision_mv_face_recognition_register_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_n2", utc_mediavision_mv_face_recognition_register_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_n3", utc_mediavision_mv_face_recognition_register_n3,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_inference_p", utc_mediavision_mv_face_recognition_inference_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_inference_n1", utc_mediavision_mv_face_recognition_inference_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_inference_n2", utc_mediavision_mv_face_recognition_inference_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_get_label_p", utc_mediavision_mv_face_recognition_get_label_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_get_label_n1", utc_mediavision_mv_face_recognition_get_label_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_get_label_n2", utc_mediavision_mv_face_recognition_get_label_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_unregister_p", utc_mediavision_mv_face_recognition_unregister_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_unregister_n1", utc_mediavision_mv_face_recognition_unregister_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_unregister_n2", utc_mediavision_mv_face_recognition_unregister_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, {NULL, NULL} }; diff --git a/src/utc/capi-media-vision/tct-capi-media-vision-core_tizeniot.h b/src/utc/capi-media-vision/tct-capi-media-vision-core_tizeniot.h index 82b233107..a7f511731 100755 --- a/src/utc/capi-media-vision/tct-capi-media-vision-core_tizeniot.h +++ b/src/utc/capi-media-vision/tct-capi-media-vision-core_tizeniot.h @@ -43,6 +43,8 @@ extern void utc_capi_media_vision_inference_pose_landmark_detect_cb4_startup(voi extern void utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup(void); extern void utc_capi_media_vision_roi_tracker_startup(void); extern void utc_capi_media_vision_roi_tracker_cleanup(void); +extern void utc_capi_media_vision_face_recognition_startup(void); +extern void utc_capi_media_vision_face_recognition_cleanup(void); extern int utc_mediavision_mv_inference_foreach_supported_engine(void); extern int utc_mediavision_mv_inference_create_p(void); @@ -258,6 +260,25 @@ extern int utc_mediavision_mv_roi_tracker_prepare_p(void); extern int utc_mediavision_mv_roi_tracker_prepare_n(void); extern int utc_mediavision_mv_roi_tracker_perform_p(void); extern int utc_mediavision_mv_roi_tracker_perform_n(void); +extern int utc_mediavision_mv_face_recognition_create_p(void); +extern int utc_mediavision_mv_face_recognition_create_n(void); +extern int utc_mediavision_mv_face_recognition_destroy_p(void); +extern int utc_mediavision_mv_face_recognition_destroy_n(void); +extern int utc_mediavision_mv_face_recognition_prepare_p(void); +extern int utc_mediavision_mv_face_recognition_prepare_n(void); +extern int utc_mediavision_mv_face_recognition_register_p(void); +extern int utc_mediavision_mv_face_recognition_register_n1(void); +extern int utc_mediavision_mv_face_recognition_register_n2(void); +extern int utc_mediavision_mv_face_recognition_register_n3(void); +extern int utc_mediavision_mv_face_recognition_inference_p(void); +extern int utc_mediavision_mv_face_recognition_inference_n1(void); +extern int utc_mediavision_mv_face_recognition_inference_n2(void); +extern int utc_mediavision_mv_face_recognition_get_label_p(void); +extern int utc_mediavision_mv_face_recognition_get_label_n1(void); +extern int utc_mediavision_mv_face_recognition_get_label_n2(void); +extern int utc_mediavision_mv_face_recognition_unregister_p(void); +extern int utc_mediavision_mv_face_recognition_unregister_n1(void); +extern int utc_mediavision_mv_face_recognition_unregister_n2(void); testcase tc_array[] = { {"utc_mediavision_mv_create_source_p",utc_mediavision_mv_create_source_p,utc_capi_media_vision_common_startup,utc_capi_media_vision_common_cleanup}, @@ -474,6 +495,25 @@ testcase tc_array[] = { {"utc_mediavision_mv_roi_tracker_prepare_n", utc_mediavision_mv_roi_tracker_prepare_n,utc_capi_media_vision_roi_tracker_startup,utc_capi_media_vision_roi_tracker_cleanup}, {"utc_mediavision_mv_roi_tracker_perform_p", utc_mediavision_mv_roi_tracker_perform_p,utc_capi_media_vision_roi_tracker_startup,utc_capi_media_vision_roi_tracker_cleanup}, {"utc_mediavision_mv_roi_tracker_perform_n", utc_mediavision_mv_roi_tracker_perform_n,utc_capi_media_vision_roi_tracker_startup,utc_capi_media_vision_roi_tracker_cleanup}, + {"utc_mediavision_mv_face_recognition_create_p", utc_mediavision_mv_face_recognition_create_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_create_n", utc_mediavision_mv_face_recognition_create_n,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_destroy_p", utc_mediavision_mv_face_recognition_destroy_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_destroy_n", utc_mediavision_mv_face_recognition_destroy_n,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_prepare_p", utc_mediavision_mv_face_recognition_prepare_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_prepare_n", utc_mediavision_mv_face_recognition_prepare_n,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_p", utc_mediavision_mv_face_recognition_register_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_n1", utc_mediavision_mv_face_recognition_register_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_n2", utc_mediavision_mv_face_recognition_register_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_n3", utc_mediavision_mv_face_recognition_register_n3,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_inference_p", utc_mediavision_mv_face_recognition_inference_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_inference_n1", utc_mediavision_mv_face_recognition_inference_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_inference_n2", utc_mediavision_mv_face_recognition_inference_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_get_label_p", utc_mediavision_mv_face_recognition_get_label_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_get_label_n1", utc_mediavision_mv_face_recognition_get_label_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_get_label_n2", utc_mediavision_mv_face_recognition_get_label_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_unregister_p", utc_mediavision_mv_face_recognition_unregister_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_unregister_n1", utc_mediavision_mv_face_recognition_unregister_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_unregister_n2", utc_mediavision_mv_face_recognition_unregister_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, {NULL, NULL} }; diff --git a/src/utc/capi-media-vision/tct-capi-media-vision-core_wearable.h b/src/utc/capi-media-vision/tct-capi-media-vision-core_wearable.h index a2721ed50..f9c2c8fc7 100755 --- a/src/utc/capi-media-vision/tct-capi-media-vision-core_wearable.h +++ b/src/utc/capi-media-vision/tct-capi-media-vision-core_wearable.h @@ -43,6 +43,8 @@ extern void utc_capi_media_vision_inference_pose_landmark_detect_cb4_startup(voi extern void utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup(void); extern void utc_capi_media_vision_roi_tracker_startup(void); extern void utc_capi_media_vision_roi_tracker_cleanup(void); +extern void utc_capi_media_vision_face_recognition_startup(void); +extern void utc_capi_media_vision_face_recognition_cleanup(void); extern int utc_mediavision_mv_create_source_p(void); extern int utc_mediavision_mv_create_source_n(void); @@ -258,6 +260,25 @@ extern int utc_mediavision_mv_roi_tracker_prepare_p(void); extern int utc_mediavision_mv_roi_tracker_prepare_n(void); extern int utc_mediavision_mv_roi_tracker_perform_p(void); extern int utc_mediavision_mv_roi_tracker_perform_n(void); +extern int utc_mediavision_mv_face_recognition_create_p(void); +extern int utc_mediavision_mv_face_recognition_create_n(void); +extern int utc_mediavision_mv_face_recognition_destroy_p(void); +extern int utc_mediavision_mv_face_recognition_destroy_n(void); +extern int utc_mediavision_mv_face_recognition_prepare_p(void); +extern int utc_mediavision_mv_face_recognition_prepare_n(void); +extern int utc_mediavision_mv_face_recognition_register_p(void); +extern int utc_mediavision_mv_face_recognition_register_n1(void); +extern int utc_mediavision_mv_face_recognition_register_n2(void); +extern int utc_mediavision_mv_face_recognition_register_n3(void); +extern int utc_mediavision_mv_face_recognition_inference_p(void); +extern int utc_mediavision_mv_face_recognition_inference_n1(void); +extern int utc_mediavision_mv_face_recognition_inference_n2(void); +extern int utc_mediavision_mv_face_recognition_get_label_p(void); +extern int utc_mediavision_mv_face_recognition_get_label_n1(void); +extern int utc_mediavision_mv_face_recognition_get_label_n2(void); +extern int utc_mediavision_mv_face_recognition_unregister_p(void); +extern int utc_mediavision_mv_face_recognition_unregister_n1(void); +extern int utc_mediavision_mv_face_recognition_unregister_n2(void); testcase tc_array[] = { {"utc_mediavision_mv_create_source_p",utc_mediavision_mv_create_source_p,utc_capi_media_vision_common_startup,utc_capi_media_vision_common_cleanup}, @@ -474,6 +495,25 @@ testcase tc_array[] = { {"utc_mediavision_mv_roi_tracker_prepare_n", utc_mediavision_mv_roi_tracker_prepare_n,utc_capi_media_vision_roi_tracker_startup,utc_capi_media_vision_roi_tracker_cleanup}, {"utc_mediavision_mv_roi_tracker_perform_p", utc_mediavision_mv_roi_tracker_perform_p,utc_capi_media_vision_roi_tracker_startup,utc_capi_media_vision_roi_tracker_cleanup}, {"utc_mediavision_mv_roi_tracker_perform_n", utc_mediavision_mv_roi_tracker_perform_n,utc_capi_media_vision_roi_tracker_startup,utc_capi_media_vision_roi_tracker_cleanup}, + {"utc_mediavision_mv_face_recognition_create_p", utc_mediavision_mv_face_recognition_create_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_create_n", utc_mediavision_mv_face_recognition_create_n,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_destroy_p", utc_mediavision_mv_face_recognition_destroy_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_destroy_n", utc_mediavision_mv_face_recognition_destroy_n,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_prepare_p", utc_mediavision_mv_face_recognition_prepare_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_prepare_n", utc_mediavision_mv_face_recognition_prepare_n,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_p", utc_mediavision_mv_face_recognition_register_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_n1", utc_mediavision_mv_face_recognition_register_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_n2", utc_mediavision_mv_face_recognition_register_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_register_n3", utc_mediavision_mv_face_recognition_register_n3,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_inference_p", utc_mediavision_mv_face_recognition_inference_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_inference_n1", utc_mediavision_mv_face_recognition_inference_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_inference_n2", utc_mediavision_mv_face_recognition_inference_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_get_label_p", utc_mediavision_mv_face_recognition_get_label_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_get_label_n1", utc_mediavision_mv_face_recognition_get_label_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_get_label_n2", utc_mediavision_mv_face_recognition_get_label_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_unregister_p", utc_mediavision_mv_face_recognition_unregister_p,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_unregister_n1", utc_mediavision_mv_face_recognition_unregister_n1,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, + {"utc_mediavision_mv_face_recognition_unregister_n2", utc_mediavision_mv_face_recognition_unregister_n2,utc_capi_media_vision_face_recognition_startup,utc_capi_media_vision_face_recognition_cleanup}, {NULL, NULL} }; diff --git a/src/utc/capi-media-vision/utc-mv_face_recognition.c b/src/utc/capi-media-vision/utc-mv_face_recognition.c new file mode 100755 index 000000000..65d312e45 --- /dev/null +++ b/src/utc/capi-media-vision/utc-mv_face_recognition.c @@ -0,0 +1,934 @@ +/** + * Copyright (c) 2022 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "assert.h" +#include + +#include +#include +#include +#include + +#include +#include +#include +#include "tct_common.h" + +#define MAX_LABEL_CNT 2 +#define MAX_IMAGE_CNT 10 +#define FILE_PATH_SIZE 1024 +#define API_NAMESPACE "[MediaVision]" + +static const char *p1_face_examples_dir = NULL; +static const char *p2_face_examples_dir = NULL; + +static const char *image_file_names[MAX_IMAGE_CNT] = { + "00.jpg", "01.jpg", "02.jpg", "03.jpg", "04.jpg", + "05.jpg", "06.jpg", "07.jpg", "08.jpg", "09.jpg" +}; + +static const char *label_names[MAX_LABEL_CNT] = { + "p1", "p2" +}; + +static int load_image_to_media_source(const char *file_path, mv_source_h source) +{ + if (NULL == file_path || NULL == source) + { + printf("File path or source is NULL\n"); + return MEDIA_VISION_ERROR_INVALID_PARAMETER; + } + + unsigned long width = 0; + unsigned long height = 0; + unsigned long long buffer_size = 0; + unsigned char *data_buffer = NULL; + int ret1 = IMAGE_UTIL_ERROR_NONE; + int ret2 = MEDIA_VISION_ERROR_NONE; + image_util_decode_h _decoder = NULL; + + ret1 = image_util_decode_create(&_decoder); + if (ret1 != IMAGE_UTIL_ERROR_NONE) goto _LOAD_IMAGE_FAIL; + ret1 = image_util_decode_set_input_path(_decoder, file_path); + if (ret1 != IMAGE_UTIL_ERROR_NONE) goto _LOAD_IMAGE_FAIL; + ret1 = image_util_decode_set_colorspace(_decoder, IMAGE_UTIL_COLORSPACE_RGB888); + if (ret1 != IMAGE_UTIL_ERROR_NONE) goto _LOAD_IMAGE_FAIL; + ret1 = image_util_decode_set_output_buffer(_decoder, &data_buffer); + if (ret1 != IMAGE_UTIL_ERROR_NONE) goto _LOAD_IMAGE_FAIL; + ret1 = image_util_decode_run(_decoder, &width, &height, &buffer_size); + if (ret1 != IMAGE_UTIL_ERROR_NONE) goto _LOAD_IMAGE_FAIL; + + // Only grayscale and RGB jpegs in test set: + mv_colorspace_e source_colorspace = MEDIA_VISION_COLORSPACE_RGB888; + + ret2 = mv_source_clear(source); + if (ret2 != MEDIA_VISION_ERROR_NONE) goto _LOAD_IMAGE_FAIL; + + ret2 = mv_source_fill_by_buffer(source, data_buffer, (unsigned long long)buffer_size, + (unsigned int)width, (unsigned int)height, source_colorspace); + +_LOAD_IMAGE_FAIL: + image_util_decode_destroy(_decoder); + if(data_buffer) + free(data_buffer); + + assert_eq(IMAGE_UTIL_ERROR_NONE, ret1); + assert_eq(MEDIA_VISION_ERROR_NONE, ret2); + return MEDIA_VISION_ERROR_NONE; +} + +static bool is_face_recognition_feature_supported(void) +{ + bool isFaceRecognitionSupported =false; + + system_info_get_platform_bool("http://tizen.org/feature/vision.inference.face", &isFaceRecognitionSupported); + + if (!is_face_recognition_feature_supported) + printf("Not support face recognition feature."); + + return isFaceRecognitionSupported; +} + +/** + * @function utc_capi_media_vision_face_recognition_startup + * @description Face recognition module UTC startup code + * @parameter NA + * @return NA + */ +void utc_capi_media_vision_face_recognition_startup(void) +{ + printf("capi-media-vision mv_face_recognition tests STARTUP is launched\n"); + + char pszValue[CONFIG_VALUE_LEN_MAX] = {0,}; + + if (!GetValueForTCTSetting("DEVICE_PHYSICAL_STORAGE_30", pszValue, API_NAMESPACE)) { + printf("Fail to get value for TCT setting.\n"); + return MEDIA_VISION_ERROR_INVALID_OPERATION; + } + + PRINT_UTC_LOG("[Line : %d][%s] 'DEVICE_PHYSICAL_STORAGE_30' Values Received %s\\n", __LINE__, API_NAMESPACE, pszValue); + + p1_face_examples_dir=(char*)calloc(strlen(pszValue)+strlen("/res/face_recognition/images/P1")+1, sizeof(char)); + snprintf(p1_face_examples_dir, strlen(pszValue)+strlen("/res/face_recognition/images/P1")+1, "%s/res/face_recognition/images/P1", pszValue); + + p2_face_examples_dir=(char*)calloc(strlen(pszValue)+strlen("/res/face_recognition/images/P2")+1, sizeof(char)); + snprintf(p2_face_examples_dir, strlen(pszValue)+strlen("/res/face_recognition/images/P2")+1, "%s/res/face_recognition/images/P2", pszValue); + + printf("capi-media-vision mv_face_recognition tests STARTUP is completed\n"); +} + +/** + * @function utc_capi_media_vision_face_recognition_cleanup + * @description Face recognition module UTC cleanup code + * @parameter NA + * @return NA + */ +void utc_capi_media_vision_face_recognition_cleanup(void) +{ + printf("capi-media-vision mv_face_recognition tests CLEANUP is launched\n"); + + free(p1_face_examples_dir); + free(p2_face_examples_dir); + + printf("capi-media-vision mv_face_recognition tests CLEANUP is completed\n"); +} + +/** + * @brief Positive test case of mv_face_recognition_create_p() + * @testcase utc_mediavision_mv_face_recognition_create_p + * @since_tizen 7.0 + * @description Create face recognition handle + */ +int utc_mediavision_mv_face_recognition_create_p(void) +{ + printf("Start mv_face_recognition_create_p\n"); + + mv_face_recognition_h handle = NULL; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_create_p\n"); + + return 0; +} + +/** + * @brief Negative test case of mv_face_recognition_create() + * @testcase utc_mediavision_mv_face_recognition_create_n + * @since_tizen 7.0 + * @description Create face recognition handle, + * but fail because input parameter is NULL + */ +int utc_mediavision_mv_face_recognition_create_n(void) +{ + printf("Start mv_face_recognition_create_n\n"); + + int ret = mv_face_recognition_create(NULL); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + printf("End mv_face_recognition_create_n\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_destroy_p() + * @testcase utc_mediavision_mv_face_recognition_destroy_p + * @since_tizen 7.0 + * @description Destroy face recognition handle + */ +int utc_mediavision_mv_face_recognition_destroy_p(void) +{ + printf("Start mv_face_recognition_destroy_p\n"); + + mv_face_recognition_h handle = NULL; + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_destroy_p\n"); + + return 0; +} + +/** + * @brief Negative test case of mv_face_recognition_destroy_n() + * @testcase utc_mediavision_mv_face_recognition_destroy_n + * @since_tizen 7.0 + * @description Destroy face recognition handle, + * but fail because input parameter is NULL + */ +int utc_mediavision_mv_face_recognition_destroy_n(void) +{ + printf("Start mv_face_recognition_destroy_n\n"); + + int ret = mv_face_recognition_destroy(NULL); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + printf("End mv_face_recognition_destroy_n\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_prepare_p() + * @testcase utc_mediavision_mv_face_recognition_prepare_p + * @since_tizen 7.0 + * @description Prepare face recognition + */ +int utc_mediavision_mv_face_recognition_prepare_p(void) +{ + printf("Start mv_face_recognition_prepare_p\n"); + + mv_face_recognition_h handle = NULL; + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_prepare_p\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_prepare_n() + * @testcase utc_mediavision_mv_face_recognition_prepare_n + * @since_tizen 7.0 + * @description Prepare face recognition + */ +int utc_mediavision_mv_face_recognition_prepare_n(void) +{ + printf("Start mv_face_recognition_prepare_n\n"); + + int ret = mv_face_recognition_prepare(NULL); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + printf("End mv_face_recognition_prepare_n\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_register_p() + * @testcase utc_mediavision_mv_face_recognition_register_p + * @since_tizen 7.0 + * @description Register face image and its label + */ +int utc_mediavision_mv_face_recognition_register_p(void) +{ + printf("Start mv_face_recognition_register_p\n"); + + mv_face_recognition_h handle = NULL; + mv_source_h mv_source = NULL; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + for (unsigned int label_idx = 0; label_idx < MAX_LABEL_CNT; ++label_idx) { + for (unsigned int img_idx = 0; img_idx < MAX_IMAGE_CNT / 2; ++img_idx) { + char image_path[FILE_PATH_SIZE] = ""; + + ret = mv_create_source(&mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + if (label_idx == 0) + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p1_face_examples_dir, image_file_names[img_idx]); + else + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p2_face_examples_dir, image_file_names[img_idx]); + + ret = load_image_to_media_source(image_path, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_register(handle, mv_source, label_names[label_idx]); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_destroy_source(mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + } + } + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_register_p\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_register_n1() + * @testcase utc_mediavision_mv_face_recognition_register_n1 + * @since_tizen 7.0 + * @description Register face image and its label + */ +int utc_mediavision_mv_face_recognition_register_n1(void) +{ + printf("Start mv_face_recognition_register_n1\n"); + + mv_face_recognition_h handle = NULL; + mv_source_h mv_source = NULL; + char image_path[FILE_PATH_SIZE] = ""; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_create_source(&mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p1_face_examples_dir, "00.jpg"); + + ret = load_image_to_media_source(image_path, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_register(NULL, mv_source, "test"); + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + ret = mv_destroy_source(mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_register_n1\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_register_n2() + * @testcase utc_mediavision_mv_face_recognition_register_n2 + * @since_tizen 7.0 + * @description Register face image and its label + */ +int utc_mediavision_mv_face_recognition_register_n2(void) +{ + printf("Start mv_face_recognition_register_n2\n"); + + mv_face_recognition_h handle = NULL; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_register(handle, NULL, "test"); + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_register_n2\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_register_n3() + * @testcase utc_mediavision_mv_face_recognition_register_n3 + * @since_tizen 7.0 + * @description Register face image and its label + */ +int utc_mediavision_mv_face_recognition_register_n3(void) +{ + printf("Start mv_face_recognition_register_n3\n"); + + mv_face_recognition_h handle = NULL; + mv_source_h mv_source = NULL; + char image_path[FILE_PATH_SIZE] = ""; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_create_source(&mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p1_face_examples_dir, "00.jpg"); + + ret = mv_face_recognition_register(handle, image_path, NULL); + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + ret = mv_destroy_source(mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_register_n3\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_infernce_p() + * @testcase utc_mediavision_mv_face_recognition_inference_p + * @since_tizen 7.0 + * @description Register face image and its label + */ +int utc_mediavision_mv_face_recognition_inference_p(void) +{ + printf("Start mv_face_recognition_inference_p\n"); + + mv_face_recognition_h handle = NULL; + mv_source_h mv_source = NULL; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + // Training + for (unsigned int label_idx = 0; label_idx < MAX_LABEL_CNT; ++label_idx) { + for (unsigned int img_idx = 0; img_idx < MAX_IMAGE_CNT / 2; ++img_idx) { + char image_path[FILE_PATH_SIZE] = ""; + + ret = mv_create_source(&mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + if (label_idx == 0) + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p1_face_examples_dir, image_file_names[img_idx]); + else + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p2_face_examples_dir, image_file_names[img_idx]); + + ret = load_image_to_media_source(image_path, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_register(handle, mv_source, label_names[label_idx]); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_destroy_source(mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + } + } + + // Inference + for (unsigned int label_idx = 0; label_idx < MAX_LABEL_CNT; ++label_idx) { + for (unsigned int img_idx = 5; img_idx < MAX_IMAGE_CNT; ++img_idx) { + char image_path[FILE_PATH_SIZE] = ""; + + ret = mv_create_source(&mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + if (label_idx == 0) + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p1_face_examples_dir, image_file_names[img_idx]); + else + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p2_face_examples_dir, image_file_names[img_idx]); + + ret = load_image_to_media_source(image_path, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_inference(handle, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_destroy_source(mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + } + } + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_inference_p\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_inference_n1() + * @testcase utc_mediavision_mv_face_recognition_inference_n1 + * @since_tizen 7.0 + * @description Recognize a given face image + */ +int utc_mediavision_mv_face_recognition_inference_n1(void) +{ + printf("Start mv_face_recognition_inference_n1\n"); + + mv_face_recognition_h handle = NULL; + mv_source_h mv_source = NULL; + char image_path[FILE_PATH_SIZE] = ""; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_create_source(&mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p1_face_examples_dir, "00.jpg"); + + ret = load_image_to_media_source(image_path, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_inference(NULL, mv_source); + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_inference_n1\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_inference_n2() + * @testcase utc_mediavision_mv_face_recognition_inference_n2 + * @since_tizen 7.0 + * @description Recognize a given face image + */ +int utc_mediavision_mv_face_recognition_inference_n2(void) +{ + printf("Start mv_face_recognition_inference_n2\n"); + + mv_face_recognition_h handle = NULL; + mv_source_h mv_source = NULL; + char image_path[FILE_PATH_SIZE] = ""; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_create_source(&mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p1_face_examples_dir, "00.jpg"); + + ret = load_image_to_media_source(image_path, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_inference(handle, NULL); + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_inference_n2\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_get_label_p() + * @testcase utc_mediavision_mv_face_recognition_get_label_p + * @since_tizen 7.0 + * @description Get a label + */ +int utc_mediavision_mv_face_recognition_get_label_p(void) +{ + printf("Start mv_face_recognition_get_label_p\n"); + + mv_face_recognition_h handle = NULL; + mv_source_h mv_source = NULL; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + // Training + for (unsigned int label_idx = 0; label_idx < MAX_LABEL_CNT; ++label_idx) { + for (unsigned int img_idx = 0; img_idx < MAX_IMAGE_CNT / 2; ++img_idx) { + char image_path[FILE_PATH_SIZE] = ""; + + ret = mv_create_source(&mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + if (label_idx == 0) + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p1_face_examples_dir, image_file_names[img_idx]); + else + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p2_face_examples_dir, image_file_names[img_idx]); + + ret = load_image_to_media_source(image_path, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_register(handle, mv_source, label_names[label_idx]); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_destroy_source(mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + } + } + + // Inference + for (unsigned int label_idx = 0; label_idx < MAX_LABEL_CNT; ++label_idx) { + for (unsigned int img_idx = 5; img_idx < MAX_IMAGE_CNT; ++img_idx) { + char image_path[FILE_PATH_SIZE] = ""; + const char *out_label = NULL; + + ret = mv_create_source(&mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + if (label_idx == 0) + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p1_face_examples_dir, image_file_names[img_idx]); + else + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p2_face_examples_dir, image_file_names[img_idx]); + + ret = load_image_to_media_source(image_path, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_inference(handle, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_get_label(handle, &out_label); + if (ret != MEDIA_VISION_ERROR_NO_DATA) + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_destroy_source(mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + } + } + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_get_label_p\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_get_label_n1() + * @testcase utc_mediavision_mv_face_recognition_get_label_n1 + * @since_tizen 7.0 + * @description Get a label + */ +int utc_mediavision_mv_face_recognition_get_label_n1(void) +{ + printf("Start mv_face_recognition_get_label_n1\n"); + + mv_face_recognition_h handle = NULL; + const char *out_label = NULL; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_get_label(NULL, &out_label); + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_get_label_n1\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_get_label_n2() + * @testcase utc_mediavision_mv_face_recognition_get_label_n2 + * @since_tizen 7.0 + * @description Get a label + */ +int utc_mediavision_mv_face_recognition_get_label_n2(void) +{ + printf("Start mv_face_recognition_get_label_n2\n"); + + mv_face_recognition_h handle = NULL; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_get_label(handle, NULL); + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_get_label_n2\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_unregister_p() + * @testcase utc_mediavision_mv_face_recognition_unregister_p + * @since_tizen 7.0 + * @description UNregister a given label + */ +int utc_mediavision_mv_face_recognition_unregister_p(void) +{ + printf("Start mv_face_recognition_unregister_p\n"); + + mv_face_recognition_h handle = NULL; + mv_source_h mv_source = NULL; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + // Training + for (unsigned int label_idx = 0; label_idx < MAX_LABEL_CNT; ++label_idx) { + for (unsigned int img_idx = 0; img_idx < MAX_IMAGE_CNT / 2; ++img_idx) { + char image_path[FILE_PATH_SIZE] = ""; + + ret = mv_create_source(&mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + if (label_idx == 0) + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p1_face_examples_dir, image_file_names[img_idx]); + else + snprintf(image_path, FILE_PATH_SIZE, "%s/%s", p2_face_examples_dir, image_file_names[img_idx]); + + ret = load_image_to_media_source(image_path, mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_register(handle, mv_source, label_names[label_idx]); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_destroy_source(mv_source); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + } + } + + for (unsigned int label_idx = 0; label_idx < MAX_LABEL_CNT; ++label_idx) { + ret = mv_face_recognition_unregister(handle, label_names[label_idx]); + assert_eq(ret, MEDIA_VISION_ERROR_NONE); + } + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_unregister_p\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_unregister_n1() + * @testcase utc_mediavision_mv_face_recognition_unregister_n1 + * @since_tizen 7.0 + * @description Unregister a given label + */ +int utc_mediavision_mv_face_recognition_unregister_n1(void) +{ + printf("Start mv_face_recognition_unregister_n1\n"); + + mv_face_recognition_h handle = NULL; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_unregister(NULL, "p1"); + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_unregister_n1\n"); + + return 0; +} + +/** + * @brief Positive test case of mv_face_recognition_unregister_n2() + * @testcase utc_mediavision_mv_face_recognition_unregister_n2 + * @since_tizen 7.0 + * @description Unregister a given label + */ +int utc_mediavision_mv_face_recognition_unregister_n2(void) +{ + printf("Start mv_face_recognition_unregister_n2\n"); + + mv_face_recognition_h handle = NULL; + + int ret = mv_face_recognition_create(&handle); + if (!is_face_recognition_feature_supported()) { + assert_eq(ret, MEDIA_VISION_ERROR_NOT_SUPPORTED); + return 0; + } + + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_prepare(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + ret = mv_face_recognition_unregister(handle, NULL); + assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret); + + ret = mv_face_recognition_destroy(handle); + assert_eq(MEDIA_VISION_ERROR_NONE, ret); + + printf("End mv_face_recognition_unregister_n2\n"); + + return 0; +} \ No newline at end of file