Added recorder_set_pcm_path function 70/217270/4 submit/tizen/20191108.073549
authorsungrae jo <seongrae.jo@samsung.com>
Fri, 8 Nov 2019 05:56:23 +0000 (14:56 +0900)
committersungrae jo <seongrae.jo@samsung.com>
Fri, 8 Nov 2019 07:19:41 +0000 (16:19 +0900)
Change-Id: I33d48d3f3b7da4b889bf7ad06cdfd32c6425954c
Signed-off-by: sungrae jo <seongrae.jo@samsung.com>
server/vcd_engine_agent.c
server/vcd_recorder.c
server/vcd_recorder.h

index c1c7c77..144267a 100644 (file)
@@ -571,6 +571,9 @@ int vcd_engine_set_private_data(int pid, const char* key, const char* data)
                return VCD_ERROR_OPERATION_FAILED;
        }
 
+       if (!strncmp(key, "##PpCcMmTestPath", 16))
+               vcd_recorder_set_pcm_path(data);
+
        int ret = -1;
        if (true == g_dynamic_engine.is_loaded && NULL != g_dynamic_engine.callbacks->private_data_set) {
                ret = g_dynamic_engine.callbacks->private_data_set(key, data);
index 11343fb..aa6799b 100644 (file)
@@ -75,6 +75,9 @@ static bool   g_is_valid_bt_in = false;
 
 static char*   g_current_audio_type = NULL;
 
+static char* g_pcm_path = NULL;
+static FILE* g_pcm_fp = NULL;
+
 static int     g_buffer_count;
 
 static int     g_device_id = -1;
@@ -405,6 +408,9 @@ int vcd_recorder_create(vcd_recoder_audio_cb audio_cb, vcd_recorder_interrupt_cb
        g_is_valid_bt_in = false;
        g_current_audio_type = NULL;
 
+       g_pcm_fp = NULL;
+       g_pcm_path = NULL;
+
        g_audio_type = VCE_AUDIO_TYPE_PCM_S16_LE;
        g_audio_rate = 16000;
        g_audio_channel = 1;
@@ -553,6 +559,14 @@ int vcd_recorder_destroy()
                g_current_audio_type = NULL;
        }
 
+       if (g_pcm_path)
+               free(g_pcm_path);
+       g_pcm_path = NULL;
+
+       if (g_pcm_fp)
+               fclose(g_pcm_fp);
+       g_pcm_fp = NULL;
+
        return 0;
 }
 
@@ -733,6 +747,44 @@ static float get_volume_decibel(char* data, int size)
        return db;
 }
 
+Eina_Bool __read_test_func(void *data)
+{
+       if (VCD_RECORDER_STATE_RECORDING != g_recorder_state) {
+               SLOG(LOG_DEBUG, TAG_VCD, "[Recorder test] Exit audio reading normal func");
+               return EINA_FALSE;
+       }
+
+       if (NULL == g_pcm_fp) {
+               g_pcm_fp = fopen(g_pcm_path, "r");
+               if (NULL == g_pcm_fp) {
+                       SLOG(LOG_ERROR, TAG_VCD, "[Recorder test ERROR] Cannot open a file : %s", g_pcm_path);
+                       return EINA_FALSE;
+               }
+       }
+
+       char buffer[BUFFER_LENGTH + 10];
+       memset(buffer, '\0', BUFFER_LENGTH + 10);
+       size_t buffer_size = 0;
+       if (!feof(g_pcm_fp))
+               buffer_size = fread(buffer, 1, BUFFER_LENGTH, g_pcm_fp);
+       if (buffer_size != BUFFER_LENGTH)
+               SLOG(LOG_DEBUG, TAG_VCD, "[Recorder test] Get data size(%d)", buffer_size);
+
+       if (NULL != g_audio_cb)
+               g_audio_cb(buffer, buffer_size);
+
+       float vol_db = get_volume_decibel(buffer, BUFFER_LENGTH);
+       if (0 != vcdc_send_set_volume(vcd_client_manager_get_pid(), vol_db))
+               SLOG(LOG_ERROR, TAG_VCD, "[Recorder test] Fail to send recording volume(%f)", vol_db);
+
+       if (feof(g_pcm_fp) != 0) {
+               fclose(g_pcm_fp);
+               g_pcm_fp = NULL;
+               return EINA_FALSE;
+       }
+       return EINA_TRUE;
+}
+
 Eina_Bool __read_normal_func(void *data)
 {
        int ret = -1;
@@ -788,7 +840,10 @@ Eina_Bool __read_normal_func(void *data)
 static void __timer_read_normal_func(void *data)
 {
        SLOG(LOG_DEBUG, TAG_VCD, "[Recorder] before __read_normal_func");
-       ecore_timer_add(0, __read_normal_func, NULL);
+       if (g_pcm_path)
+               ecore_timer_add(0, __read_test_func, NULL);
+       else
+               ecore_timer_add(0, __read_normal_func, NULL);
        return;
 }
 
@@ -1142,6 +1197,14 @@ int vcd_recorder_stop()
        fclose(g_normal_file);
 #endif
 
+       if (g_pcm_path)
+               free(g_pcm_path);
+       g_pcm_path = NULL;
+
+       if (g_pcm_fp)
+               fclose(g_pcm_fp);
+       g_pcm_fp = NULL;
+
        bool stoped = false;
 
        if (NULL != g_current_audio_type) {
@@ -1233,3 +1296,18 @@ int vcd_recorder_get_state()
 {
        return g_recorder_state;
 }
+
+int vcd_recorder_set_pcm_path(const char *path)
+{
+       SLOG(LOG_DEBUG, TAG_VCD, "[Recorder] set pcm path : %s", path);
+
+       if (path == NULL)
+               return 0;
+
+       if (g_pcm_path)
+               free(g_pcm_path);
+       g_pcm_path = NULL;
+
+       g_pcm_path = strdup(path);
+       return 0;
+}
index 9ac8b1e..8e1b015 100644 (file)
@@ -61,6 +61,7 @@ int vcd_recorder_stop();
 
 int vcd_recorder_get_state();
 
+int vcd_recorder_set_pcm_path(const char *path);
 
 #ifdef __cplusplus
 }