MMI_API int MMI_PROVIDER_EVENT_GESTURE = -1;
MMI_API int MMI_PROVIDER_EVENT_VOICE = -1;
MMI_API int MMI_PROVIDER_EVENT_VISION = -1;
+MMI_API int MMI_VISION_EVENT_PROPAGATE = -1;
+MMI_API int MMI_VISION_EVENT_FINISH = -1;
MMI_API extern int MMI_PROVIDER_EVENT_GESTURE;
MMI_API extern int MMI_PROVIDER_EVENT_VOICE;
MMI_API extern int MMI_PROVIDER_EVENT_VISION;
+MMI_API extern int MMI_VISION_EVENT_PROPAGATE;
+MMI_API extern int MMI_VISION_EVENT_FINISH;
+
+//TODO. not use mmi_vision_state, use mmi_event_vision_type
+typedef enum mmi_vision_state
+{
+ LIKE,
+ OKAY,
+ NO
+} mmi_vision_state;
typedef enum mmi_event_key_type
{
ev->type, ev->timestamp, ev->duration, ev->confidence);
LOGI("... cmd:%s, nargs:%d, source:%s\n", ev->cmd, ev->nargs, ev->source);
+ mmi_vision_state state = ev->type;
+ LOGI("[MMI_PROVIDER_EVENT_VISION] state = %d", state);
+
+ switch(state)
+ {
+ case 0:
+ LOGI("LIKE\n");
+ break;
+ case 1:
+ LOGI("OKAY\n");
+ break;
+ case 2:
+ LOGI("NO\n");
+ LOGI("type : %d, confidence : %f\n", ev->type, ev->confidence);
+ break;
+ }
return ECORE_CALLBACK_PASS_ON;
}
MMI_PROVIDER_EVENT_GESTURE = ecore_event_type_new();
MMI_PROVIDER_EVENT_VOICE = ecore_event_type_new();
MMI_PROVIDER_EVENT_VISION = ecore_event_type_new();
+ MMI_VISION_EVENT_PROPAGATE = ecore_event_type_new();
+ MMI_VISION_EVENT_FINISH = 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);
#include <stdio.h>
#include <stdlib.h>
+#include <Ecore.h>
mmi_provider_op_mode _provider_mode = MODALITY_PROVIDER_MODE_NONE;
if(!mode)
return false;
_provider_mode = mode;
+
+ if(_provider_mode == MODALITY_PROVIDER_MODE_PROPAGATE_EVENT)
+ {
+ //TODO. vision_streaming();
+ ecore_event_add(MMI_VISION_EVENT_PROPAGATE, NULL, NULL, NULL);
+ }
return true;
}
int max_confidence_idx = 0;
mv_engine_config_h _engine_cfg = NULL;
mv_inference_h _infer = NULL;
+static Ecore_Event_Handler *_event_handlers;
typedef struct _video_info{
pthread_mutex_t* mutex;
}
LOGD("end of destroy");
+
+ //Todo. for test
+ ecore_event_add(MMI_VISION_EVENT_FINISH, NULL, NULL, NULL);
}
void eos_frame_cb(mv_video_reader_h reader,
return err;
}
+static Eina_Bool
+_vision_event_cb(void *data EINA_UNUSED, int type, void *event)
+{
+ char *path_to_video = NULL;
+
+ //for test
+ path_to_video = "/tmp/test_video_2.mp4";
+
+ //TODO. find video path while camera streaming when propagation
+
+ LOGD("vision event working\n");
+ if(path_to_video)
+ {
+ LOGI("path to video = %s", path_to_video);
+ classification_from_video(path_to_video);
+ }
+ else
+ LOGE("No path to video");
+
+ return ECORE_CALLBACK_PASS_ON;
+}
+
void vision_init(void)
{
int err = MEDIA_VISION_ERROR_NONE;
err = image_classification_init();
+ _event_handlers = ecore_event_handler_add(MMI_VISION_EVENT_PROPAGATE, _vision_event_cb, NULL);
if (err != MEDIA_VISION_ERROR_NONE)
LOGE("Fail to detect with engine [err:%i]\n", err);
{
RET_IF_FAIL(mv_destroy_engine_config(_engine_cfg));
}
+ ecore_event_handler_del(_event_handlers);
+ _event_handlers = NULL;
LOGD("end of shutdown");
}