[commit] r8294 - freeswitch/trunk/src/mod/endpoints/mod_portaudio
Author: anthm Date: Wed May 7 12:32:04 2008 New Revision: 8294 Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c Log: testing beware Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c Wed May 7 12:32:04 2008 @@ -552,7 +552,7 @@ globals.read_frame.datalen = samples * 2; globals.read_frame.samples = samples; - switch_core_timer_check(&globals.timer, SWITCH_TRUE); + //switch_core_timer_check(&globals.timer, SWITCH_TRUE); *frame = &globals.read_frame; if (!switch_test_flag((&globals), GFLAG_MOUTH)) { Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c Wed May 7 12:32:04 2008 @@ -145,20 +145,36 @@ { long bytesRead; char *p = (char *) data; - long numBytes = aStream->bytesPerFrame * numFrames; + long avail, readBytes = 0, numBytes = aStream->bytesPerFrame * numFrames; while (numBytes > 0) { - bytesRead = PaUtil_ReadRingBuffer(&aStream->inFIFO, p, numBytes); - numBytes -= bytesRead; + avail = PaUtil_GetRingBufferReadAvailable(&aStream->inFIFO); + + if (avail >= numBytes * 10) { + PaUtil_FlushRingBuffer(&aStream->inFIFO); + avail = 0; + } + + if (avail >= numBytes) { + bytesRead = PaUtil_ReadRingBuffer(&aStream->inFIFO, p, numBytes); + numBytes -= bytesRead; + readBytes += bytesRead; + } + if (numBytes > 0) { if (switch_core_timer_check(timer, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) { - PaUtil_FlushRingBuffer(&aStream->inFIFO); - return 0; + break; } switch_yield(1000); + p += bytesRead; } } - return numFrames; + + if (readBytes) { + switch_core_timer_sync(timer); + } + + return readBytes / aStream->bytesPerFrame; } /************************************************************
participants (1)
-
Freeswitch SVN