[UTC][media-vision][ACR-1700] add utc for face recognition 04/279304/5
authorInki Dae <inki.dae@samsung.com>
Wed, 27 Jul 2022 07:39:08 +0000 (16:39 +0900)
committerInki Dae <inki.dae@samsung.com>
Wed, 10 Aug 2022 06:34:01 +0000 (15:34 +0900)
Change-Id: I9114122a6e8c9c35c8c10b987c68bb6627256604
Signed-off-by: Inki Dae <inki.dae@samsung.com>
29 files changed:
packaging/utc/core-capi-media-vision-tests.spec
scripts_tpk/spec.sh
src/utc/capi-media-vision/CMakeLists.txt
src/utc/capi-media-vision/public.list
src/utc/capi-media-vision/res/face_recognition/images/P1/00.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P1/01.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P1/02.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P1/03.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P1/04.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P1/05.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P1/06.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P1/07.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P1/08.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P1/09.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P2/00.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P2/01.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P2/02.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P2/03.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P2/04.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P2/05.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P2/06.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P2/07.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P2/08.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/images/P2/09.jpg [new file with mode: 0755]
src/utc/capi-media-vision/res/face_recognition/models/facenet.tflite [new file with mode: 0644]
src/utc/capi-media-vision/tct-capi-media-vision-core_mobile.h
src/utc/capi-media-vision/tct-capi-media-vision-core_tizeniot.h
src/utc/capi-media-vision/tct-capi-media-vision-core_wearable.h
src/utc/capi-media-vision/utc-mv_face_recognition.c [new file with mode: 0755]

index afe67fa150bf129217d42ffcf3c3fb23e9af84a4..d6647709973a0c710929e304e7e2f35b33c2bd57 100755 (executable)
@@ -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
index a91687ec0fb9157b4b9f4ab18e3f7fd031966588..a9dab9ecdac1f7efa01122293eb057635f668a86 100755 (executable)
@@ -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
index b917658c9149d8803402abc972e9b0b24b6e191f..cbff4c29d64d69542588b30f1a84f119e8941f9d 100644 (file)
@@ -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
index 645b467cb3d3293f2cca40b10bd6f9c7998c08f6..d4570901bc34ffc5477b0bf81f40e0c4139e0264 100755 (executable)
@@ -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 (executable)
index 0000000..3fa77e1
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 (executable)
index 0000000..f2b27ba
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 (executable)
index 0000000..27bf5f0
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 (executable)
index 0000000..3a317ad
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 (executable)
index 0000000..5b3f8c6
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 (executable)
index 0000000..bedc5f1
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 (executable)
index 0000000..180173a
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 (executable)
index 0000000..70a0f9d
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 (executable)
index 0000000..c6556a4
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 (executable)
index 0000000..4b510db
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 (executable)
index 0000000..54be030
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 (executable)
index 0000000..aa86935
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 (executable)
index 0000000..8650349
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 (executable)
index 0000000..1f8f469
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 (executable)
index 0000000..5a68372
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 (executable)
index 0000000..8e1300f
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 (executable)
index 0000000..b507918
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 (executable)
index 0000000..78d1e06
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 (executable)
index 0000000..1989d27
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 (executable)
index 0000000..5d8288c
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 (file)
index 0000000..4c19477
Binary files /dev/null and b/src/utc/capi-media-vision/res/face_recognition/models/facenet.tflite differ
index bf5d5be1c18ed0fba2f481bc9f3262b140e36106..0de7d1a83c8299ca913cd1376f9c98fddcbb0241 100755 (executable)
@@ -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}
 };
 
index 82b2331077c8ba1b268e76775c549a4bdb10abea..a7f511731a89abec9ab9b3b0913f8990be17c58e 100755 (executable)
@@ -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}
 };
 
index a2721ed50bf07e8ce0d9ae857482db58ec309762..f9c2c8fc753ad1c8963a23c68efb3d16d6b37ef1 100755 (executable)
@@ -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 (executable)
index 0000000..65d312e
--- /dev/null
@@ -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 <mv_face_recognition.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <image_util.h>
+#include <system_info.h>
+#include <storage.h>
+#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