From: Suyeon Hwang Date: Fri, 17 Jul 2020 06:19:50 +0000 (+0900) Subject: Set and unset all audio feed callbacks on create/destroy X-Git-Tag: submit/tizen/20210610.085541~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F62%2F238762%2F6;p=platform%2Fcore%2Fuifw%2Fvoice-control.git Set and unset all audio feed callbacks on create/destroy Change-Id: Ia79cd65c242fe5392c615d81596f5b13217c7192 Signed-off-by: Suyeon Hwang --- diff --git a/server/vcd_recorder.c b/server/vcd_recorder.c index f532aca..f122ef6 100644 --- a/server/vcd_recorder.c +++ b/server/vcd_recorder.c @@ -536,6 +536,24 @@ int vcd_recorder_create(vcd_recoder_audio_cb audio_cb, vcd_recorder_interrupt_cb ma_ap_initialize(); ma_ap_set_audio_streaming_cb(audio_streaming_cb, NULL); + /* Set audio feed callback */ +#ifdef TV_BT_MODE + if (BT_ERROR_NONE != bt_hid_set_audio_data_receive_cb(_bt_hid_audio_data_receive_cb, NULL)) { + SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail bt_hid_set_audio_data_receive_cb()"); + } +#endif +#ifdef TV_FFV_MODE + if (g_farfieldvoice_h) { + SLOG(LOG_INFO, TAG_VCD, "[Recorder INFO] Register farfield voice audio callback"); + farfield_voice_register_audio_cb(g_farfieldvoice_h, _ffv_audio_function_cb, NULL); + } +#endif +#ifdef TV_MSF_WIFI_MODE + if (MSFResult_OK != RegisterMSFAudioCallback(__msf_wifi_audio_data_receive_cb, NULL)) { + SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to start Wi-Fi audio"); + } +#endif + return 0; } @@ -544,21 +562,7 @@ int vcd_recorder_destroy() ma_ap_deinitialize(); int ret = -1; if (VCD_RECORDER_STATE_RECORDING == g_recorder_state) { - if (0 == strncmp(VCE_AUDIO_ID_BLUETOOTH, g_current_audio_type, strlen(VCE_AUDIO_ID_BLUETOOTH))) { -#ifdef TV_BT_MODE - bt_hid_unset_audio_data_receive_cb(); -#endif - } else if (0 == strncmp(VCE_AUDIO_ID_WIFI, g_current_audio_type, strlen(VCE_AUDIO_ID_WIFI))) { -#ifdef TV_MSF_WIFI_MODE - UnRegisterMSFAudioCallback(); -#endif - } else { - ret = audio_in_unprepare(g_audio_h); - if (AUDIO_IO_ERROR_NONE != ret) { - SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to unprepare audio : %d", ret); - } - } - g_recorder_state = VCD_RECORDER_STATE_READY; + vcd_recorder_stop(); } ret = sound_manager_remove_device_connection_changed_cb(g_device_id); @@ -576,6 +580,11 @@ int vcd_recorder_destroy() SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to audio in destroy, ret(%d)", ret); g_audio_h = NULL; + +#ifdef TV_MSF_WIFI_MODE + UnRegisterMSFAudioCallback(); +#endif + #ifdef TV_FFV_MODE if (NULL != g_farfieldvoice_h) { SLOG(LOG_INFO, TAG_VCD, "[Recorder INFO] Unregister farfield voice"); @@ -586,9 +595,7 @@ int vcd_recorder_destroy() #ifdef TV_BT_MODE bt_hid_unset_audio_data_receive_cb(); - bt_hid_host_deinitialize(); - bt_product_deinit(); #endif @@ -607,7 +614,7 @@ int vcd_recorder_destroy() fclose(g_pcm_fp); g_pcm_fp = NULL; - return 0; + return VCD_ERROR_NONE; } int vcd_recorder_set(const char* audio_type, vce_audio_type_e type, int rate, int channel) @@ -1120,64 +1127,18 @@ int vcd_recorder_start() } g_buffer_count = 0; - - SLOG(LOG_INFO, TAG_VCD, "[Recorder] Enter, recorder state(%d)", g_recorder_state); - - if (VCD_RECORDER_STATE_RECORDING == g_recorder_state) return 0; - - bool started = false; - SLOG(LOG_INFO, TAG_VCD, "[Recorder] audio type : %s", g_current_audio_type); - - if (NULL != g_current_audio_type) { - if (0 == strncmp(VCE_AUDIO_ID_BLUETOOTH, g_current_audio_type, strlen(VCE_AUDIO_ID_BLUETOOTH))) { #ifdef TV_BT_MODE - if (BT_ERROR_NONE != bt_hid_set_audio_data_receive_cb(_bt_hid_audio_data_receive_cb, NULL)) { - SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail bt_hid_set_audio_data_receive_cb()"); - } - SLOG(LOG_INFO, TAG_VCD, "[Recorder] Start bt audio"); - g_bt_extend_count = 0; - started = true; + g_bt_extend_count = 0; #endif - } else if (0 == strncmp(VCE_AUDIO_ID_FFV, g_current_audio_type, strlen(VCE_AUDIO_ID_FFV))) { - SLOG(LOG_INFO, TAG_VCD, "[Recorder] call farfield_voice_register_audio_cb() function"); -#ifdef TV_FFV_MODE - if (g_farfieldvoice_h) { - SLOG(LOG_INFO, TAG_VCD, "[Recorder INFO] Register farfield voice audio callback"); - farfield_voice_register_audio_cb(g_farfieldvoice_h, _ffv_audio_function_cb, NULL); - } -#endif - started = true; - } else if (0 == strncmp(VCE_AUDIO_ID_WIFI, g_current_audio_type, strlen(VCE_AUDIO_ID_WIFI))) { - SLOG(LOG_INFO, TAG_VCD, "[Recorder] call RegisterMSFAudioCallback() function"); -#ifdef TV_MSF_WIFI_MODE - ret = RegisterMSFAudioCallback(__msf_wifi_audio_data_receive_cb, NULL); - SLOG(LOG_ERROR, TAG_VCD, "[Recorder] ret = %d", ret); - if (MSFResult_OK == ret) { - started = true; - } else { - SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to start Wi-Fi audio"); - return VCD_ERROR_OPERATION_FAILED; - } -#endif - } + SLOG(LOG_INFO, TAG_VCD, "[Recorder] Enter, recorder state(%d)", g_recorder_state); + if (VCD_RECORDER_STATE_RECORDING == g_recorder_state) { + return VCD_ERROR_NONE; } - SLOG(LOG_INFO, TAG_VCD, "[Recorder] started = %d", started); - if (false == started) { + if (NULL != g_current_audio_type && 0 == strncmp(VCE_AUDIO_ID_NONE, g_current_audio_type, strlen(VCE_AUDIO_ID_NONE))) { /* check audio format */ __check_audio_format(); -#if 0 - ret = sound_manager_acquire_focus(g_stream_info_h, SOUND_STREAM_FOCUS_FOR_RECORDING, NULL); - if (SOUND_MANAGER_ERROR_NONE != ret) { - SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to acquire focus : %d", ret); - } else { - ret = audio_in_set_sound_stream_info(g_audio_h, g_stream_info_h); - if (AUDIO_IO_ERROR_NONE != ret) { - SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to set stream info : %d", ret); - } - } -#endif ret = audio_in_prepare(g_audio_h); if (AUDIO_IO_ERROR_NONE != ret) { @@ -1226,7 +1187,7 @@ int vcd_recorder_start() SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] File not found!"); } #endif - return 0; + return VCD_ERROR_NONE; } int vcd_recorder_stop() @@ -1240,7 +1201,7 @@ int vcd_recorder_stop() } if (VCD_RECORDER_STATE_READY == g_recorder_state) - return 0; + return VCD_ERROR_NONE; g_recorder_state = VCD_RECORDER_STATE_READY; @@ -1256,91 +1217,17 @@ int vcd_recorder_stop() fclose(g_pcm_fp); g_pcm_fp = NULL; - bool stoped = false; - - if (NULL != g_current_audio_type) { - if (0 == strncmp(VCE_AUDIO_ID_BLUETOOTH, g_current_audio_type, strlen(VCE_AUDIO_ID_BLUETOOTH))) { -#ifdef TV_BT_MODE - // Unregister callback for bluetooth audio - bt_hid_unset_audio_data_receive_cb(); - - int bt_retry = 0; - while (5 > bt_retry) { - ret = bt_hid_rc_stop_sending_voice(NULL); - if (BT_ERROR_NONE == ret) { - SLOG(LOG_INFO, TAG_VCD, "[Recorder] Stop bt audio recorder"); - stoped = true; - break; - } else if (BT_ERROR_NOW_IN_PROGRESS == ret) { - SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail bt_hid_rc_stop_sending_voice()"); - usleep(50000); - bt_retry++; - } else { - break; - } - } - if (NULL != g_current_audio_type && - (!strncmp(g_current_audio_type, VCE_AUDIO_ID_BLUETOOTH, sizeof(VCE_AUDIO_ID_BLUETOOTH)) || - !strncmp(g_current_audio_type, VCE_AUDIO_ID_FFV, sizeof(VCE_AUDIO_ID_FFV)) || - !strncmp(g_current_audio_type, VCE_AUDIO_ID_WIFI, sizeof(VCE_AUDIO_ID_WIFI)))) { - SLOG(LOG_INFO, TAG_VCD, "[DEBUG] Recorder reset to NONE"); - vcd_recorder_set(VCE_AUDIO_ID_NONE, g_audio_type, g_audio_rate, g_audio_channel); - } - - if (false == stoped) { - SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to stop bt audio"); - return VCD_ERROR_OPERATION_FAILED; - } -#endif - } else if (0 == strncmp(VCE_AUDIO_ID_FFV, g_current_audio_type, strlen(VCE_AUDIO_ID_FFV))) { - SLOG(LOG_INFO, TAG_VCD, "[DEBUG] FFV"); -#ifdef TV_FFV_MODE - // Unregister callback for far field audio - if (g_farfieldvoice_h) - farfield_voice_unregister_audio_cb(g_farfieldvoice_h); -#endif - if (NULL != g_current_audio_type && - (!strncmp(g_current_audio_type, VCE_AUDIO_ID_BLUETOOTH, sizeof(VCE_AUDIO_ID_BLUETOOTH)) || - !strncmp(g_current_audio_type, VCE_AUDIO_ID_FFV, sizeof(VCE_AUDIO_ID_FFV)) || - !strncmp(g_current_audio_type, VCE_AUDIO_ID_WIFI, sizeof(VCE_AUDIO_ID_WIFI)))) { - SLOG(LOG_INFO, TAG_VCD, "[DEBUG] Recorder reset to NONE"); - vcd_recorder_set(VCE_AUDIO_ID_NONE, g_audio_type, g_audio_rate, g_audio_channel); - } - stoped = true; - } else if (0 == strncmp(VCE_AUDIO_ID_WIFI, g_current_audio_type, strlen(VCE_AUDIO_ID_WIFI))) { -#ifdef TV_MSF_WIFI_MODE - // Unregister callback for wifi audio - UnRegisterMSFAudioCallback(); - - if (NULL != g_current_audio_type && - (!strncmp(g_current_audio_type, VCE_AUDIO_ID_BLUETOOTH, sizeof(VCE_AUDIO_ID_BLUETOOTH)) || - !strncmp(g_current_audio_type, VCE_AUDIO_ID_WIFI, sizeof(VCE_AUDIO_ID_WIFI)))) { - SLOG(LOG_INFO, TAG_VCD, "[DEBUG] Recorder reset to NONE"); - vcd_recorder_set(VCE_AUDIO_ID_NONE, g_audio_type, g_audio_rate, g_audio_channel); - } - stoped = true; -#endif - } else { - SLOG(LOG_INFO, TAG_VCD, "[Recorder] current audio type is NONE"); - } - } - - if (false == stoped) { + if (NULL != g_current_audio_type && 0 == strncmp(VCE_AUDIO_ID_NONE, g_current_audio_type, strlen(VCE_AUDIO_ID_NONE))) { ret = audio_in_unprepare(g_audio_h); if (AUDIO_IO_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to stop audio : %d", ret); return VCD_ERROR_OPERATION_FAILED; } - -#if 0 - ret = sound_manager_release_focus(g_stream_info_h, SOUND_STREAM_FOCUS_FOR_RECORDING, NULL); - if (SOUND_MANAGER_ERROR_NONE != ret) { - SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to release focus : %d", ret); - } -#endif } - return 0; + vcd_recorder_set(VCE_AUDIO_ID_NONE, g_audio_type, g_audio_rate, g_audio_channel); + + return VCD_ERROR_NONE; } int vcd_recorder_get_state()