Forráskód Böngészése

Z991239-3726 #comment 解决sipphone实体存在lost问题

80274480 3 éve
szülő
commit
55ff8ddb9e

+ 6 - 3
Module/mod_sipphone/audio_session.cpp

@@ -66,7 +66,7 @@ struct audio_session_t
 	audiobridge_t *bridge;
 	apr_pool_t *micspk_pool;
 
-#ifdef _WIN32
+#ifdef RVC_OS_WIN
 	audiomicspk2_t* micspkstream;
 #else
 	audiomicspkpulse_t* micspkstream;
@@ -156,7 +156,7 @@ static int rvc_audio_play_ns(void* pdst, size_t udstlen, void* psrc, size_t usrc
 	return iret;
 }
 
-static int (rvc_audio_playing_data)(void* pdata, size_t ulen, void* user_data)
+static int rvc_audio_playing_data(void* pdata, size_t ulen, void* user_data)
 {
 	int iret = -1;
 	audio_session_t* session = (audio_session_t*)user_data;
@@ -181,6 +181,7 @@ static int (rvc_audio_playing_data)(void* pdata, size_t ulen, void* user_data)
 				iaudiolen = 0;
 			}
 		}
+		iret = 0;
 	}
 
 	return iret;
@@ -628,6 +629,7 @@ static int phonemedia_start(audio_session_t *session)
 	media->micspkstream->on_tx_audio = &tx_audio_callback;
 	media->micspkstream->on_audio_ns = &rvc_audio_ns;
 	media->micspkstream->on_audio_play_ns = &rvc_audio_play_ns;
+	media->micspkstream->on_audio_playing = &rvc_audio_playing_data;
 	//media->micspkstream->on_audio_device_event = &audio_device_event;
 	Dbg("init on_rx_audio success!");
 
@@ -916,7 +918,7 @@ static int phonemedia_chang_dev(audio_session_t *session, e_dev_type t)
 			opt_micspk |= AMS2_OPT_AEC;
 
 		Dbg("start audiomicspk_create");
-#ifdef _WIN32
+#ifdef RVC_OS_WIN
 		audiomicspk2_create(media->micspk_pool, media->engine, opt_micspk, AUDIO_CLOCK, in_dev, out_dev, &media->micspkstream);
 #else
 		audiomicspkpulse_create(media->micspk_pool, media->engine, opt_micspk, AUDIO_CLOCK, in_dev, out_dev, t, &audio_device_event, &media->micspkstream);
@@ -927,6 +929,7 @@ static int phonemedia_chang_dev(audio_session_t *session, e_dev_type t)
 		media->micspkstream->on_tx_audio = &tx_audio_callback;
 		media->micspkstream->on_audio_ns = &rvc_audio_ns;
 		media->micspkstream->on_audio_play_ns = &rvc_audio_play_ns;
+		media->micspkstream->on_audio_playing = &rvc_audio_playing_data;
 		//media->micspkstream->on_audio_device_event = &audio_device_event;
 		media->phonemedia_conf.dev_type = t;
 		Dbg("init change dev on_rx_audio success!");

+ 2 - 0
Other/libaudioframework/audiomicspk2.h

@@ -47,6 +47,8 @@ struct audiomicspk2_t
 	int (*on_tx_audio)(void* audiodata, void* user_data);
 	int (*on_audio_ns)(void* pdst, size_t udstlen, void* psrc, size_t usrclen, void* user_data);
 	int (*on_audio_play_ns)(void* pdst, size_t udstlen, void* psrc, size_t usrclen, void* user_data);
+	int (*on_audio_playing)(void* pdata, size_t ulen, void* user_data);
+	void (*on_audio_device_event)(bool bopen, int iret, bool bmicro, int idev, const char* strmessage, void* user_data);
 	void*user_data;
 };
 

+ 3 - 30
Other/libaudioframework/audiomicspkpulse.c

@@ -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);

+ 1 - 1
Other/libaudioframework/audiomicspkpulse.h

@@ -124,8 +124,8 @@ typedef struct audiomicspkpulse_s
 	int (*on_tx_audio)(void* audiodata, void* user_data);
 	int (*on_audio_ns)(void* pdst, size_t udstlen, void* psrc, size_t usrclen, void* user_data);
 	int (*on_audio_play_ns)(void* pdst, size_t udstlen, void* psrc, size_t usrclen, void* user_data);
-	void (*on_audio_device_event)(bool bopen, int iret, bool bmicro, int idev, const char* strmessage, void* user_data);
 	int (*on_audio_playing)(void* pdata, size_t ulen, void* user_data);
+	void (*on_audio_device_event)(bool bopen, int iret, bool bmicro, int idev, const char* strmessage, void* user_data);
 	void* user_data;
 	audio_context_t* audio_ctx;
 }audiomicspkpulse_t;