Implement new interface for sending streaming mode to dependency module 60/243160/6
authorSuyeon Hwang <stom.hwang@samsung.com>
Thu, 3 Sep 2020 11:13:54 +0000 (20:13 +0900)
committerSuyeon Hwang <stom.hwang@samsung.com>
Tue, 8 Jun 2021 08:05:47 +0000 (17:05 +0900)
Change-Id: I7d01effab7dae6380f3525dbbec595a041376d20
Signed-off-by: Suyeon Hwang <stom.hwang@samsung.com>
audio-manager/inc/vc_audio_manager.h
audio-manager/src/vc_audio_manager.cpp
server/dependency_audio_manager.cpp
server/dependency_audio_manager.h
server/vcd_dbus_server.c
server/vcd_recorder.c
server/vcd_recorder.h
server/vcd_server.c
server/vcd_server.h

index 59354e2..4c41777 100644 (file)
@@ -30,6 +30,7 @@ int vcd_dependency_initialize(sound_stream_info_h stream_info_h, dependency_audi
 int vcd_dependency_deinitialize(void);
 int vcd_dependency_set_audio_info(sound_stream_info_h stream_info_h, const char* audio_source_type, vce_audio_type_e type, int rate, int channel);
 int vcd_dependency_get_audio_source_type(char** audio_source_type);
+int vcd_dependency_set_streaming_mode(vc_audio_streaming_mode_e mode);
 int vcd_dependency_start_recording(void);
 int vcd_dependency_stop_recording(void);
 
index e1253ae..c595f01 100644 (file)
@@ -25,6 +25,7 @@
 #include <sound_manager_internal.h>
 
 #include "vce.h"
+#include "voice_control_manager.h"
 #include "vc_audio_manager_dlog.h"
 #include "vc_audio_manager.h"
 
@@ -38,6 +39,7 @@ static dependency_audio_manager_feed_audio_data g_feed_audio_data = nullptr;
 
 static audio_in_h g_audio_h = nullptr;
 static vce_audio_type_e g_audio_type = VCE_AUDIO_TYPE_PCM_S16_LE;
+static vc_audio_streaming_mode_e g_streaming_mode = VC_AUDIO_STREAMING_MODE_VC_SERVICE;
 static int g_audio_rate = 0;
 static int g_audio_channel = 0;
 
@@ -133,6 +135,7 @@ int vcd_dependency_initialize(sound_stream_info_h stream_info_h, dependency_audi
 {
        int ret = 0;
 
+       g_streaming_mode = VC_AUDIO_STREAMING_MODE_VC_SERVICE;
        g_audio_type = VCE_AUDIO_TYPE_PCM_S16_LE;
        g_audio_rate = 16000;
        g_audio_channel = 1;
@@ -261,6 +264,18 @@ int vcd_dependency_get_audio_source_type(char** audio_source_type)
        return VCE_ERROR_NONE;
 }
 
+int vcd_dependency_set_streaming_mode(vc_audio_streaming_mode_e mode)
+{
+       if (nullptr == g_audio_h) {
+               VCAM_LOGE("[ERROR] g_audio_h is not created");
+               return VCE_ERROR_INVALID_STATE;
+       }
+
+       g_streaming_mode = mode;
+
+       return VCE_ERROR_NONE;
+}
+
 int vcd_dependency_start_recording(void)
 {
        VCAM_LOGI("");
index 762a813..8e2f6b0 100644 (file)
@@ -67,6 +67,8 @@ int dependency_audio_manager_initialize(sound_stream_info_h stream_info_h, depen
                (vcd_dependency_set_audio_info)dlsym(g_lib_handle, VCD_DEPENDENCY_FUNC_SET_AUDIO_INFO);
        g_interface.get_audio_source_type =
                (vcd_dependency_get_audio_source_type)dlsym(g_lib_handle, VCD_DEPENDENCY_FUNC_GET_AUDIO_SOURCE_TYPE);
+       g_interface.set_streaming_mode =
+               (vcd_dependency_set_streaming_mode)dlsym(g_lib_handle, VCD_DEPENDENCY_FUNC_SET_STREAMING_MODE);
        g_interface.start_recording =
                (vcd_dependency_start_recording)dlsym(g_lib_handle, VCD_DEPENDENCY_FUNC_START_RECORDING);
        g_interface.stop_recording =
@@ -188,6 +190,35 @@ int dependency_audio_manager_get_audio_source_type(char** audio_source_type)
        return ret;
 }
 
+int dependency_audio_manager_set_streaming_mode(vc_audio_streaming_mode_e mode)
+{
+       SLOG(LOG_DEBUG, LOG_TAG, "@@@ Set streaming mode");
+       int ret = 0;
+       if (NULL != g_lib_handle) {
+               vcd_dependency_set_streaming_mode func = g_interface.set_streaming_mode;
+
+               if (NULL == func) {
+                       SLOG(LOG_ERROR, LOG_TAG, "[ERROR] symbol lookup failed : %s", VCD_DEPENDENCY_FUNC_SET_STREAMING_MODE);
+               } else {
+                       try {
+                               ret = func(mode);
+                       } catch (const std::exception& e) {
+                               SLOG(LOG_ERROR, LOG_TAG, "[ERROR] %s of dependency module threw exception : %s",
+                                       VCD_DEPENDENCY_FUNC_SET_STREAMING_MODE, e.what());
+                       }
+
+                       if (0 != ret) {
+                               SLOG(LOG_ERROR, LOG_TAG, "[ERROR] Fail to set streaming mode, ret(%d)", ret);
+                       }
+               }
+       } else {
+               SLOG(LOG_ERROR, LOG_TAG, "[ERROR] g_lib_handle is not valid");
+       }
+
+       SLOG(LOG_DEBUG, LOG_TAG, "@@@");
+       return ret;
+}
+
 int dependency_audio_manager_start_recording(void)
 {
        SLOG(LOG_DEBUG, LOG_TAG, "@@@ Start recording");
index 5f5ce7b..0eb5ebd 100644 (file)
@@ -21,6 +21,7 @@
 #include <tzplatform_config.h>
 #include <sound_manager.h>
 #include <vce.h>
+#include <voice_control_manager.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -45,6 +46,8 @@ typedef int (*vcd_dependency_deinitialize)(void);
 typedef int (*vcd_dependency_set_audio_info)(sound_stream_info_h stream_info_h, const char* audio_source_type, vce_audio_type_e type, int rate, int channel);
 #define VCD_DEPENDENCY_FUNC_GET_AUDIO_SOURCE_TYPE "vcd_dependency_get_audio_source_type"
 typedef int (*vcd_dependency_get_audio_source_type)(char** audio_source_type);
+#define VCD_DEPENDENCY_FUNC_SET_STREAMING_MODE "vcd_dependency_set_streaming_mode"
+typedef int (*vcd_dependency_set_streaming_mode)(vc_audio_streaming_mode_e mode);
 #define VCD_DEPENDENCY_FUNC_START_RECORDING "vcd_dependency_start_recording"
 typedef int (*vcd_dependency_start_recording)(void);
 #define VCD_DEPENDENCY_FUNC_STOP_RECORDING "vcd_dependency_stop_recording"
@@ -56,6 +59,7 @@ typedef struct {
        vcd_dependency_deinitialize                             deinitialize;
        vcd_dependency_set_audio_info                   set_audio_info;
        vcd_dependency_get_audio_source_type    get_audio_source_type;
+       vcd_dependency_set_streaming_mode               set_streaming_mode;
        vcd_dependency_start_recording                  start_recording;
        vcd_dependency_stop_recording                   stop_recording;
 } vcd_dependency_module_interface;
@@ -65,6 +69,7 @@ int dependency_audio_manager_initialize(sound_stream_info_h stream_info_h, depen
 int dependency_audio_manager_deinitialize(void);
 int dependency_audio_manager_set_audio_info(sound_stream_info_h stream_info_h, const char* audio_source_type, vce_audio_type_e type, int rate, int channel);
 int dependency_audio_manager_get_audio_source_type(char** audio_source_type);
+int dependency_audio_manager_set_streaming_mode(vc_audio_streaming_mode_e mode);
 int dependency_audio_manager_start_recording(void);
 int dependency_audio_manager_stop_recording(void);
 
index d7314de..d30dd2b 100755 (executable)
@@ -114,7 +114,7 @@ int vcd_dbus_server_mgr_initialize(DBusConnection* conn, DBusMessage* msg)
                ret = VCD_ERROR_OPERATION_FAILED;
        } else {
                vcd_config_set_audio_streaming_mode((vcd_audio_streaming_mode_e)streaming_mode);
-               ret =  vcd_server_mgr_initialize(pid);
+               ret = vcd_server_mgr_initialize(pid, streaming_mode);
                service_state = vcd_server_get_service_state();
                foreground = vcd_server_get_foreground();
                daemon_pid = getpid();
index 74875e8..fc06fec 100644 (file)
@@ -368,6 +368,16 @@ int vcd_recorder_get(char** audio_type)
        return VCD_ERROR_NONE;
 }
 
+int vcd_recorder_set_audio_streaming_mode(vcd_audio_streaming_mode_e mode)
+{
+       if (0 != dependency_audio_manager_set_streaming_mode((vc_audio_streaming_mode_e)mode)) {
+               SLOG(LOG_WARN, TAG_VCD, "[Recorder] Fail to set audio mode to dependency module(%d)", mode);
+               return VCD_ERROR_OPERATION_FAILED;
+       }
+
+       return VCD_ERROR_NONE;
+}
+
 Eina_Bool __read_test_func(void *data)
 {
        if (VCD_RECORDER_STATE_RECORDING != g_recorder_state) {
index 8e1b015..f075cae 100644 (file)
@@ -43,6 +43,8 @@ int vcd_recorder_set(const char* audio_type, vce_audio_type_e type, int rate, in
 
 int vcd_recorder_get(char** audio_type);
 
+int vcd_recorder_set_audio_streaming_mode(vcd_audio_streaming_mode_e mode);
+
 int vcd_recorder_start_streaming();
 
 int vcd_recorder_send_streaming(const void* buffer, const unsigned int length);
index 8c290cf..a89732f 100644 (file)
@@ -1659,7 +1659,7 @@ static Eina_Bool __vcd_send_service_state(void *data)
 /*
 * API for manager
 */
-int vcd_server_mgr_initialize(int pid)
+int vcd_server_mgr_initialize(int pid, vcd_audio_streaming_mode_e mode)
 {
        /* check if pid is valid */
        if (false == vcd_client_manager_is_valid(pid)) {
@@ -1678,6 +1678,8 @@ int vcd_server_mgr_initialize(int pid)
        if (0 != vcdc_send_manager_pid(pid))
                SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to send manager pid");
 
+       vcd_recorder_set_audio_streaming_mode(mode);
+
        ecore_timer_add(0.05, __vcd_send_service_state, NULL);
 
        SLOG(LOG_ERROR, TAG_VCD, "[Server Success] Manager initialize : pid(%d)", pid);
index e675b0b..7597b3d 100644 (file)
@@ -45,7 +45,7 @@ int vcd_server_get_foreground();
 /*
 * For manager
 */
-int vcd_server_mgr_initialize(int pid);
+int vcd_server_mgr_initialize(int pid, vcd_audio_streaming_mode_e mode);
 
 int vcd_server_mgr_finalize(int pid);