|
@@ -465,7 +465,9 @@ static void stream_write_request_cb(pa_stream* s, size_t length, void* data)
|
|
|
int iget = delay_buf_get((delay_buf*)audio_micspk->ply_dbuf, (short*)delaybuffer);
|
|
|
if (0 == iget){
|
|
|
//char audionsbuffer[RVC_DELAY_AUDIO_LEN] = { 0 };
|
|
|
- audio_micspk->on_audio_playing(delaybuffer, RVC_DELAY_AUDIO_LEN, audio_micspk->user_data);
|
|
|
+ if (NULL != audio_micspk->on_audio_playing) {
|
|
|
+ audio_micspk->on_audio_playing((void*)delaybuffer, RVC_DELAY_AUDIO_LEN, audio_micspk->user_data);
|
|
|
+ }
|
|
|
//if (0 == audio_micspk->on_audio_play_ns(audionsbuffer, RVC_DELAY_AUDIO_LEN, delaybuffer, RVC_DELAY_AUDIO_LEN, audio_micspk->user_data)) {
|
|
|
if (audio_ctx->uaudio_len + RVC_DELAY_AUDIO_LEN < RVC_MAX_AUDIO_BUFFER_LEN) {
|
|
|
memcpy(audio_ctx->paudio_buffer + audio_ctx->uaudio_len, delaybuffer, RVC_DELAY_AUDIO_LEN);
|
|
@@ -669,7 +671,6 @@ void* pulse_read_audio(void* data)
|
|
|
bufattr.fragsize = bufattr.tlength = (uint32_t)-1;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
pastream_flag |= PA_STREAM_INTERPOLATE_TIMING;
|
|
|
pastream_flag |= PA_STREAM_AUTO_TIMING_UPDATE;
|
|
|
|
|
@@ -1192,37 +1193,9 @@ void* APR_THREAD_FUNC* audiowork_proc(apr_thread_t* threadhandle, void* param)
|
|
|
micspk->baudio_device_started_flag = true;
|
|
|
audio_log_v(AUDIO_LOG_LEVEL_INFO, "%s:%d micspk addr is 0x%08x, current sem addr is 0x%08x.", __FUNCTION__, __LINE__, micspk, micspk->audio_device_started_sem);
|
|
|
|
|
|
-
|
|
|
sem_wait(micspk->audio_device_started_sem);
|
|
|
audio_log_v(AUDIO_LOG_LEVEL_INFO, "%s:%d after post audio_device_started_sem.", __FUNCTION__, __LINE__);
|
|
|
|
|
|
- //while (true)
|
|
|
- //{
|
|
|
- // struct timespec ts;
|
|
|
- // //int ivalue = -1;
|
|
|
- // clock_gettime(CLOCK_REALTIME, &ts);
|
|
|
- // long unsec = ts.tv_nsec + (1000 * 1000 * CLOCK_PERIOD);
|
|
|
- // ts.tv_sec += (unsec / 1000000000);
|
|
|
- // ts.tv_nsec = (unsec % 1000000000);
|
|
|
-
|
|
|
- // //sem_getvalue(micspk->audio_device_started_sem, &ivalue);
|
|
|
- // //audio_log_v(AUDIO_LOG_LEVEL_INFO, "%s:%d current sem value is %d.", __FUNCTION__, __LINE__, ivalue);
|
|
|
- // if (-1 == sem_timedwait(micspk->audio_device_started_sem, &ts)) {
|
|
|
- // if (ETIMEDOUT == errno) {
|
|
|
- // if (micspk->opt & AMS_OPT_RECORD) {
|
|
|
- // on_clock_rec(micspk);
|
|
|
- // }
|
|
|
- // else if (micspk->opt & AMS_OPT_PLAY) {
|
|
|
- // on_clock_spk(micspk);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // else {
|
|
|
- // audio_log_v(AUDIO_LOG_LEVEL_INFO, "%s:%d exit audiowork_proc circle.", __FUNCTION__, __LINE__);
|
|
|
- // break;
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
on_error:
|
|
|
if (micspk->opt & AMS_OPT_RECPLAY) {
|
|
|
uninitialize_micro(micspk);
|