+ ret = audio_in_unprepare(g_recorder->audio_h);
+ if (AUDIO_IO_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Recorder ERROR] Fail to unprepare audioin : %d", ret);
+ }
+#else
+ int bt_retry = 0;
+ bool stopped = false;
+ while (5 > bt_retry) {
+ ret = bt_hid_rc_stop_sending_voice(NULL);
+ if (BT_ERROR_NONE == ret) {
+ SLOG(LOG_DEBUG, TAG_STTD, "[Recorder] Stop bt audio");
+ stopped = true;
+ break;
+ } else if (BT_ERROR_NOW_IN_PROGRESS == ret) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Recorder ERROR] Fail bt_hid_rc_stop_sending_voice()");
+ usleep(50000);
+ bt_retry++;
+ } else {
+ SLOG(LOG_ERROR, TAG_STTD, "[Recorder ERROR] bt_hid_rc_stop_sending_voice(): ret(%d)", ret);
+ break;
+ }
+ }
+ if (false == stopped) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Recorder ERROR] Fail to stop bt audio(%d)", ret);
+// return STTD_ERROR_OPERATION_FAILED;
+ }
+#endif
+
+#ifdef TV_FFV_MODE
+ ret = farfield_voice_set_recognition_state(FARFIELD_VOICE_RECOGNITION_STOP);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Recorder ERROR] Fail to stop FFV, ret(%d)", ret);
+ }
+#endif
+
+ g_recorder_state = STTD_RECORDER_STATE_READY;
+
+#ifdef BUF_SAVE_MODE
+ fclose(g_pFile);
+#endif
+ pthread_mutex_unlock(&sttd_audio_in_handle_mutex);
+ SLOG(LOG_WARN, TAG_STTD, "[Recorder WARNING] Leave critical section");