@@ -207,13 +207,6 @@ void * runInputBufferOnThread(void * ptr)
207207
208208 fprintf (stderr, " AudioMonitor2 runInputBufferOnThread - produce bytes failed, bytesAvailableCount = %d\n " , bytesAvailableCount);
209209 }
210- else
211- {
212- if (audioConverterThreadID == 0 )
213- {
214- // createAudioConverterThread();
215- }
216- }
217210 }
218211
219212 free (rtlsdrBuffer);
@@ -468,7 +461,8 @@ void convertBuffer(void * inputBufferPtr, unsigned int dataLength)
468461 void * convertedDataPtr = audioConverterOutputBufferList.mBuffers [0 ].mData ;
469462
470463 int32_t space;
471- void *ptr = TPCircularBufferHead (&audioConverterCircularBuffer, &space); // for fprintf to stderr below
464+ void * headPtr = TPCircularBufferHead (&audioConverterCircularBuffer, &space); // for fprintf to stderr below
465+ int64_t bufferFilledSize = (int64_t )headPtr - (int64_t )inputBufferPtr;
472466
473467 fwrite (convertedDataPtr, 1 , convertedDataLength, stdout); // write resampled audio to stdout, can be piped to sox, etc.
474468
@@ -477,24 +471,29 @@ void convertBuffer(void * inputBufferPtr, unsigned int dataLength)
477471 if (produceBytesResult == false )
478472 {
479473 // TODO: We are here to avoid buffer overrun, is TPCircularBufferConsume for audioConverterCircularBuffer getting missed somewhere?
480-
481- // clear buffer and try again (not recommended practice)
482- TPCircularBufferClear (&(audioConverterCircularBuffer));
483474
475+ // clear buffer and try again (not the recommended practice)
476+
477+ usleep (500000 );
478+
479+ TPCircularBufferClear (&(audioConverterCircularBuffer));
480+
481+ // fprintf(stderr, "AudioMonitor2 convertBuffer TPCircularBufferClear and try again, convertedDataLength = %d, space = %d, head = %p\n", convertedDataLength, space, headPtr);
482+
484483 produceBytesResult = TPCircularBufferProduceBytes (&audioConverterCircularBuffer, convertedDataPtr, convertedDataLength);
485484
486485 if (produceBytesResult == false )
487486 {
488487 // If we get here, packets will be dropped
489-
490- fprintf (stderr, " AudioMonitor convertBuffer Produce convertedDataLength = %d, space = %d, head = %p\n " , convertedDataLength, space, ptr);
491- fprintf (stderr, " AudioMonitor convertBuffer - produce bytes failed, convertedDataLength = %d\n " , convertedDataLength);
488+
489+ fprintf (stderr, " AudioMonitor2 convertBuffer failed, drop packet, convertedDataLength = %d, space = %d, head = %p, bufferFilledSize = %lld\n " , convertedDataLength, space, headPtr, bufferFilledSize);
492490 }
493491 }
494-
495- if (audioQueueThreadID == 0 )
492+ else
496493 {
497- // createAudioQueueThread();
494+ TPCircularBufferClear (&(audioConverterCircularBuffer));
495+
496+ usleep (5000 );
498497 }
499498 }
500499
0 commit comments