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;
}
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);
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");
#ifdef TV_BT_MODE
bt_hid_unset_audio_data_receive_cb();
-
bt_hid_host_deinitialize();
-
bt_product_deinit();
#endif
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)
}
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) {
SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] File not found!");
}
#endif
- return 0;
+ return VCD_ERROR_NONE;
}
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;
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()