コード例 #1
0
/* HTS_Audio_close: close audio device */
void HTS_Audio_close(HTS_Audio * as)
{
   MMRESULT error;

   if (as->buff_size != 0)
      HTS_Audio_write_buffer(as);
   while (as->now_buff_1 == TRUE)
      Sleep(AUDIO_WAIT_BUFF_MS);
   while (as->now_buff_2 == TRUE)
      Sleep(AUDIO_WAIT_BUFF_MS);
   /* stop audio */
   error = waveOutReset(as->hwaveout);
   if (error != MMSYSERR_NOERROR)
      HTS_error(0,
                "hts_engine: Cannot stop and reset your output audio device.\n");
   /* unprepare */
   error = waveOutUnprepareHeader(as->hwaveout, &(as->buff_1), sizeof(WAVEHDR));
   if (error != MMSYSERR_NOERROR)
      HTS_error(0,
                "hts_engine: Cannot cleanup the audio datablocks to play waveform.\n");
   error = waveOutUnprepareHeader(as->hwaveout, &(as->buff_2), sizeof(WAVEHDR));
   if (error != MMSYSERR_NOERROR)
      HTS_error(0,
                "hts_engine: Cannot cleanup the audio datablocks to play waveform.\n");
   /* close */
   error = waveOutClose(as->hwaveout);
   if (error != MMSYSERR_NOERROR)
      HTS_error(0, "hts_engine: Failed to close your output audio device.\n");
   HTS_free(as->buff_1.lpData);
   HTS_free(as->buff_2.lpData);
   HTS_free(as->buff);
}
コード例 #2
0
ファイル: HTS_audio.c プロジェクト: A-L-E-X/RHVoice
/* HTS_Audio_write: send data to audio */
void HTS_Audio_write(HTS_Audio * audio, short data)
{
   audio->buff[audio->buff_size++] = data;
   if (audio->buff_size == audio->max_buff_size) {
      HTS_Audio_write_buffer(audio);
      audio->buff_size = 0;
   }
}
コード例 #3
0
/* HTS_Audio_write: send data to audio device */
void HTS_Audio_write(HTS_Audio * as, short data)
{
   as->buff[as->buff_size] = data;
   as->buff_size++;
   if (as->buff_size == as->max_buff_size) {
      HTS_Audio_write_buffer(as);
      as->buff_size = 0;
   }
}
コード例 #4
0
ファイル: HTS_audio.c プロジェクト: A-L-E-X/RHVoice
/* HTS_Audio_flush: flush remain data */
void HTS_Audio_flush(HTS_Audio * audio)
{
   if (audio->buff_size > 0) {
      HTS_Audio_write_buffer(audio);
      audio->buff_size = 0;
   }
   while (audio->now_buff_1 == TRUE)
      Sleep(AUDIO_WAIT_BUFF_MS);
   while (audio->now_buff_2 == TRUE)
      Sleep(AUDIO_WAIT_BUFF_MS);
}