作者 王振宇

修复循环播放的文本切换实时喊话文本播放不立刻停止的问题

@@ -124,7 +124,7 @@ int JZ_TtsPlayFeature(int len,char* data) @@ -124,7 +124,7 @@ int JZ_TtsPlayFeature(int len,char* data)
124 { 124 {
125 usleep(100*1000); 125 usleep(100*1000);
126 } 126 }
127 - usleep(600*1000); 127 + usleep(700*1000);
128 if(GetSpeakerMode() == 2) 128 if(GetSpeakerMode() == 2)
129 { 129 {
130 TTS(tts_tone,100,tts_speed,len,data); 130 TTS(tts_tone,100,tts_speed,len,data);
@@ -249,8 +249,10 @@ static T_UAVReturnCode StartPlay(void) @@ -249,8 +249,10 @@ static T_UAVReturnCode StartPlay(void)
249 } 249 }
250 else 250 else
251 { 251 {
252 - SetSpeakerMode(1);//实时喊话 252 + stop_music();
  253 + Opus_RealTimeSpeak_AbnormalInterrupt();
253 Init_opus(); 254 Init_opus();
  255 + SetSpeakerMode(1);//实时喊话
254 SetSpeakerState(UAV_WIDGET_SPEAKER_STATE_PLAYING); 256 SetSpeakerState(UAV_WIDGET_SPEAKER_STATE_PLAYING);
255 break; 257 break;
256 } 258 }
@@ -428,7 +430,8 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl) @@ -428,7 +430,8 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl)
428 break; 430 break;
429 case 8://音频暂停 431 case 8://音频暂停
430 break; 432 break;
431 - case 9://音频停止 433 + case 9://音频停止
  434 + LOG_INFO("音频停止");
432 WidgetPlayFlag = 0;//用于退出录音喊话 435 WidgetPlayFlag = 0;//用于退出录音喊话
433 stop_music(); 436 stop_music();
434 set_paly_state(0); 437 set_paly_state(0);
@@ -446,7 +449,8 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl) @@ -446,7 +449,8 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl)
446 break; 449 break;
447 case 14://播放音频 450 case 14://播放音频
448 if(readyflag == 1)//喊话器准备就绪 451 if(readyflag == 1)//喊话器准备就绪
449 - { 452 + {
  453 + LOG_INFO("播放录音");
450 SetSpeakerMode(3); 454 SetSpeakerMode(3);
451 JZ_loop_playback_create();//录音喊话线程 455 JZ_loop_playback_create();//录音喊话线程
452 } 456 }
@@ -458,9 +462,11 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl) @@ -458,9 +462,11 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl)
458 JZ_SpeechSpeedControlFeature(speakerControl->value); 462 JZ_SpeechSpeedControlFeature(speakerControl->value);
459 break; 463 break;
460 case 17://文本传输 464 case 17://文本传输
461 - SetSpeakerMode(2); 465 + SetSpeakerMode(2);
  466 + set_paly_state(2);
462 break; 467 break;
463 - case 18://文本传输结束 468 + case 18://文本传输结束
  469 + LOG_INFO("播放文本");
464 JZ_TtsPlayFeature(text_len,(char *)text_buf);//播放文本 470 JZ_TtsPlayFeature(text_len,(char *)text_buf);//播放文本
465 break; 471 break;
466 472
@@ -610,18 +610,21 @@ void *TTS_first(void *arg) @@ -610,18 +610,21 @@ void *TTS_first(void *arg)
610 610
611 //TTS合成线程 611 //TTS合成线程
612 void *TTS_flie(void *arg) 612 void *TTS_flie(void *arg)
613 -{  
614 - 613 +{
615 SetTtsStatus(1); 614 SetTtsStatus(1);
616 set_amplifier(1); 615 set_amplifier(1);
617 616
618 play_tts(tts_tone,tts_volume,tts_speed,ttsdata);//生成文件 617 play_tts(tts_tone,tts_volume,tts_speed,ttsdata);//生成文件
619 618
620 - set_amplifier(0);  
621 - SetTtsStatus(0); 619 + set_amplifier(0);
622 set_volume(now_volume);//恢复音量 620 set_volume(now_volume);//恢复音量
623 delay(500); 621 delay(500);
  622 + if(play_mode == 1)
  623 + {
  624 + delay(1000);
  625 + }
624 626
  627 + SetTtsStatus(0);
625 } 628 }
626 629
627 //TTS_mobie合成线程 630 //TTS_mobie合成线程