add events relate to speaker recognition 48/295848/1
authorulgal-park <ulgal.park@samsung.com>
Thu, 22 Dec 2022 01:13:40 +0000 (10:13 +0900)
committerSuyeon Hwang <stom.hwang@samsung.com>
Fri, 14 Jul 2023 10:54:54 +0000 (19:54 +0900)
Change-Id: I87503397eb23a4eeaeebcb740696f8094c8f52d2

mmi-manager.xml
src/mmimgr/mmi-client.c
src/mmimgr/mmi-common.c
src/mmimgr/mmi-common.h
src/mmimgr/mmi-core.c
src/mmimgr/mmi-manager.c
src/mmimgr/mmi-provider.c
tests/mmi-client-tests.cpp

index 9ff40f9..e2db274 100644 (file)
@@ -11,5 +11,6 @@
                <privilege>http://tizen.org/privilege/datasharing</privilege>
                <privilege>http://tizen.org/privilege/externalstroage</privilege>
                <privilege>http://tizen.org/privilege/mediastorage</privilege>
+               <privilege>http://tizen.org/privilege/recorder</privilege>
        </privileges>
 </manifest>
index 9ff459e..d87fd3a 100644 (file)
@@ -38,7 +38,7 @@ typedef struct {
 Eina_Hash *_client_hash = NULL;
 static Eina_Bool _init_done = false;
 
-unsigned long long input_event_caps[MMI_INPUT_EVENT_TYPE_VOICE_RECOGNITION+1] =
+unsigned long long input_event_caps[MMI_INPUT_EVENT_TYPE_SPEAKER_RECOGNITION+1] =
 {
        //MMI_INPUT_EVENT_TYPE_NONE
        MODALITY_PROVIDER_CAP_NONE,
@@ -46,9 +46,9 @@ unsigned long long input_event_caps[MMI_INPUT_EVENT_TYPE_VOICE_RECOGNITION+1] =
        MODALITY_PROVIDER_CAP_KEY_EVENT |
        MODALITY_PROVIDER_CAP_VOICE_EVENT |
        MODALITY_PROVIDER_CAP_SCREEN_ANALYZER_EVENT,
-       //MMI_INPUT_EVENT_TYPE_VOICE_RECOGNITION
+       //MMI_INPUT_EVENT_TYPE_SPEAKER_RECOGNITION
        MODALITY_PROVIDER_CAP_KEY_EVENT |
-       MODALITY_PROVIDER_CAP_VOICE_EVENT,
+       MODALITY_PROVIDER_CAP_SPEAKER_RECOGNIZE_EVENT,
 };
 
 static Eina_Bool
index 7238613..81dda82 100644 (file)
@@ -36,3 +36,6 @@ MMI_API int MMI_VISION_EVENT_PROPAGATE = -1;
 MMI_API int MMI_VISION_EVENT_DROP = -1;
 MMI_API int MMI_VISION_EVENT_FINISH = -1;
 MMI_API int MMI_EVENT_REFRESH_SCREEN_INFORM = -1;
+
+MMI_API int MMI_PROVIDER_EVENT_SPEAKER_RECOGNIZER = -1;
+MMI_API int MMI_EVENT_SPEAKER_RECOGNIZER = -1;
index a0c2b83..fcd9555 100644 (file)
@@ -43,11 +43,14 @@ MMI_API extern int MMI_VISION_EVENT_DROP;
 MMI_API extern int MMI_VISION_EVENT_FINISH;
 MMI_API extern int MMI_EVENT_REFRESH_SCREEN_INFORM;
 
+MMI_API extern int MMI_PROVIDER_EVENT_SPEAKER_RECOGNIZER;
+MMI_API extern int MMI_EVENT_SPEAKER_RECOGNIZER;
+
 //TODO. not use mmi_vision_state, use mmi_event_vision_type
 typedef enum {
        MMI_INPUT_EVENT_TYPE_NONE,
        MMI_INPUT_EVENT_TYPE_VOICE_TOUCH,
-       MMI_INPUT_EVENT_TYPE_VOICE_RECOGNITION
+       MMI_INPUT_EVENT_TYPE_SPEAKER_RECOGNITION
 } mmi_input_event_type_e;
 
 typedef enum mmi_vision_state
@@ -320,6 +323,39 @@ typedef struct
        int operation;
 } mmi_output_modality_voice_touch;
 
+typedef enum mmi_speaker_recognizer_operation
+{
+       MMI_SPEAKER_RECOGNIZER_RECORDING_START,
+       MMI_SPEAKER_RECOGNIZER_RECORDING_STOP,
+       MMI_SPEAKER_RECOGNIZER_ADD_USER,
+       MMI_SPEAKER_RECOGNIZER_DELETE_USER,
+       MMI_SPEAKER_RECOGNIZER_RECOGNIZE_SPEAKER,
+} mmi_speaker_recognizer_operation;
+
+typedef struct
+{
+       char *id;
+       char *name;
+       float score;
+} speaker_result;
+
+typedef struct
+{
+       int type;
+       int timestamp;
+       int duration;
+       double confidence;
+       char *speaker;
+       GList *speaker_list; // list of speaker_result
+} mmi_provider_event_speaker_recognizer;
+typedef struct
+{
+       int operation;
+       char *id;
+       char *name;
+       char *path;
+} mmi_event_speaker_recognizer;
+
 typedef unsigned long long ull;
 
 typedef enum mmi_state
@@ -351,6 +387,9 @@ typedef enum mmi_provider_capability
        MODALITY_PROVIDER_CAP_VOICE_EVENT = (1 << 4),
        MODALITY_PROVIDER_CAP_VISION_EVENT = (1 << 5),
        MODALITY_PROVIDER_CAP_SCREEN_ANALYZER_EVENT = (1 << 6),
+
+       MODALITY_PROVIDER_CAP_SPEAKER_RECOGNIZE_EVENT = (1 << 7),
+
        MODALITY_PROVIDER_CAP_UNKNOWN = ((ull)1 << 62),
        MODALITY_PROVIDER_CAP_MAX = ((ull)1 << 63)
 } mmi_provider_capability;
index 7b63439..85f2d0c 100644 (file)
@@ -40,6 +40,7 @@ enum event_handlers {
        EVENT_HANDLER_VOICE,
        EVENT_HANDLER_VISION,
        EVENT_HANDLER_SCREEN_ANALYZER,
+       EVENT_HANDLER_SPEAKER_RECOGNIZER,
        EVENT_HANDLER_MAX
 };
 
@@ -196,6 +197,18 @@ static Eina_Bool __screen_analyzer_event_cb(void *data EINA_UNUSED, int type, vo
        return ECORE_CALLBACK_PASS_ON;
 }
 
+
+static Eina_Bool __speaker_recognizer_event_cb(void *data EINA_UNUSED, int type, void *event)
+{
+       mmi_provider_event_speaker_recognizer *ev = (mmi_provider_event_speaker_recognizer *)event;
+       _I("[Speaker recognizer] type : %d, timestamp : %d", ev->type, ev->timestamp);
+
+       mmi_iu_feed_input_modality(MMI_PROVIDER_EVENT_SPEAKER_RECOGNIZER, ev);
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+
 static void __shutdown_event_handler()
 {
        _I("Shutdown event handlers");
@@ -225,6 +238,10 @@ static void __init_event_handler()
                                __vision_event_cb, NULL);
        _event_handlers[EVENT_HANDLER_SCREEN_ANALYZER] = ecore_event_handler_add(MMI_PROVIDER_EVENT_SCREEN_ANALYZER,
                                __screen_analyzer_event_cb, NULL);
+
+       _event_handlers[EVENT_HANDLER_SPEAKER_RECOGNIZER] = ecore_event_handler_add(MMI_PROVIDER_EVENT_SPEAKER_RECOGNIZER,
+                               __speaker_recognizer_event_cb, NULL);
+
 }
 
 int mmi_core_init()
index d7a370b..23afa8c 100644 (file)
@@ -102,6 +102,8 @@ _flush_all_event_type()
        ecore_event_type_flush_internal(MMI_VISION_EVENT_PROPAGATE);
        ecore_event_type_flush_internal(MMI_VISION_EVENT_FINISH);
        ecore_event_type_flush_internal(MMI_EVENT_REFRESH_SCREEN_INFORM);
+       ecore_event_type_flush_internal(MMI_PROVIDER_EVENT_SPEAKER_RECOGNIZER);
+       ecore_event_type_flush_internal(MMI_EVENT_SPEAKER_RECOGNIZER);
 }
 
 void
index 98ea5e9..ffdd32a 100644 (file)
@@ -33,7 +33,7 @@
 #include <string.h>
 
 Eina_List *_provider_list = NULL;
-Ecore_Event_Handler *_provider_event_handlers[5];
+Ecore_Event_Handler *_provider_event_handlers[6];
 
 static Eina_Bool
 _key_provider_event_cb(void *data EINA_UNUSED, int type, void *event)
@@ -103,10 +103,19 @@ _vision_provider_event_cb(void *data EINA_UNUSED, int type, void *event)
 static Eina_Bool
 _screen_analyzer_provider_event_cb(void *data EINA_UNUSED, int type, void *event)
 {
-       // TOODO: implement
+       // TODO: implement
        return ECORE_CALLBACK_PASS_ON;
 }
 
+
+static Eina_Bool
+_speaker_recognizer_provider_event_cb(void *data EINA_UNUSED, int type, void *event)
+{
+       // TODO: implement
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+
 int
 mmi_provider_set_op_mode_on_caps(unsigned long long caps, mmi_provider_op_mode mode)
 {
@@ -267,6 +276,8 @@ _event_handler_init()
        MMI_VISION_EVENT_FINISH = ecore_event_type_new();
        MMI_EVENT_REFRESH_SCREEN_INFORM = ecore_event_type_new();
        MMI_PROVIDER_EVENT_VOICE_TOUCH = ecore_event_type_new();
+       MMI_PROVIDER_EVENT_SPEAKER_RECOGNIZER = ecore_event_type_new();
+       MMI_EVENT_SPEAKER_RECOGNIZER = ecore_event_type_new();
 
        LOGD("MMI_PROVIDER_EVENT_KEY=%d\n", MMI_PROVIDER_EVENT_KEY);
        LOGD("MMI_PROVIDER_EVENT_GESTURE=%d\n", MMI_PROVIDER_EVENT_GESTURE);
@@ -286,6 +297,9 @@ _event_handler_init()
                        _vision_provider_event_cb, NULL);
        _provider_event_handlers[4] = ecore_event_handler_add(MMI_PROVIDER_EVENT_SCREEN_ANALYZER,
                        _screen_analyzer_provider_event_cb, NULL);
+       _provider_event_handlers[5] = ecore_event_handler_add(MMI_PROVIDER_EVENT_SPEAKER_RECOGNIZER,
+                       _screen_analyzer_provider_event_cb, NULL);
+
 }
 
 static void
@@ -297,17 +311,21 @@ _event_handler_shutdown()
        ecore_event_handler_del(_provider_event_handlers[2]);
        ecore_event_handler_del(_provider_event_handlers[3]);
        ecore_event_handler_del(_provider_event_handlers[4]);
+       ecore_event_handler_del(_provider_event_handlers[5]);
        _provider_event_handlers[0] = NULL;
        _provider_event_handlers[1] = NULL;
        _provider_event_handlers[2] = NULL;
        _provider_event_handlers[3] = NULL;
        _provider_event_handlers[4] = NULL;
+       _provider_event_handlers[5] = NULL;
 
        MMI_PROVIDER_EVENT_KEY = -1;
        MMI_PROVIDER_EVENT_GESTURE = -1;
        MMI_PROVIDER_EVENT_VOICE = -1;
        MMI_PROVIDER_EVENT_VISION = -1;
        MMI_PROVIDER_EVENT_SCREEN_ANALYZER = -1;
+       MMI_PROVIDER_EVENT_SPEAKER_RECOGNIZER = -1;
+       MMI_EVENT_SPEAKER_RECOGNIZER = -1;
 
        LOGD("MMI_PROVIDER_EVENT_KEY=%d\n", MMI_PROVIDER_EVENT_KEY);
        LOGD("MMI_PROVIDER_EVENT_GESTURE=%d\n", MMI_PROVIDER_EVENT_GESTURE);
index 07a5a26..184492b 100644 (file)
@@ -274,7 +274,7 @@ TEST_F(MMIClientTest, MMIClientActivateInputEventFail2)
        mc = client_manager_add_client(app_id);
        EXPECT_NE(mc, nullptr);
 
-       res = client_manager_activate_input_event(mc, MMI_INPUT_EVENT_TYPE_VOICE_RECOGNITION);
+       res = client_manager_activate_input_event(mc, MMI_INPUT_EVENT_TYPE_SPEAKER_RECOGNITION);
        EXPECT_EQ(res, MMI_ERROR_INVALID_PARAMETER);
 
        res = client_manager_remove_client(app_id);