mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-26 09:28:07 +02:00
Disable part of the drop-out detection...
... The part that checks the previously unused statusFlags argument of audacityAudioCallback can make zero-length labels. I did provoke this into happening repeatably on macOS using a debug build, zero buffer length in device preferences, and a busy CPU running other programs, within just two minutes of recording. But close zooming in on the label, and listening, revealed nothing obviously wrong, no click in the playback. So I consider that a false positive. But the part of the drop-out detection that would make nonzero length labels, because the other AudioThread is lagging in its writes to disk -- this part remains. Yet I have not yet provoked this into happening.
This commit is contained in:
parent
d2749068f1
commit
b0690a2a5c
@ -5153,10 +5153,12 @@ int audacityAudioCallback(const void *inputBuffer, void *outputBuffer,
|
|||||||
if( inputBuffer && (numCaptureChannels > 0) )
|
if( inputBuffer && (numCaptureChannels > 0) )
|
||||||
{
|
{
|
||||||
// The error likely from a too-busy CPU falling behind real-time data
|
// The error likely from a too-busy CPU falling behind real-time data
|
||||||
// is paInputOverflow, but let's check the other input error too
|
// is paInputOverflow
|
||||||
bool inputError =
|
bool inputError =
|
||||||
(statusFlags & (paInputOverflow | paInputUnderflow))
|
(statusFlags & (paInputOverflow))
|
||||||
&& !(statusFlags & paPrimingOutput);
|
&& !(statusFlags & paPrimingOutput);
|
||||||
|
// But it seems it's easy to get false positives, at least on Mac
|
||||||
|
wxUnusedVar( inputError );
|
||||||
|
|
||||||
size_t len = framesPerBuffer;
|
size_t len = framesPerBuffer;
|
||||||
for(unsigned t = 0; t < numCaptureChannels; t++)
|
for(unsigned t = 0; t < numCaptureChannels; t++)
|
||||||
@ -5173,7 +5175,8 @@ int audacityAudioCallback(const void *inputBuffer, void *outputBuffer,
|
|||||||
// enough from mCaptureBuffers; maybe it's CPU-bound, or maybe the
|
// enough from mCaptureBuffers; maybe it's CPU-bound, or maybe the
|
||||||
// storage device it writes is too slow
|
// storage device it writes is too slow
|
||||||
if (gAudioIO->mDetectDropouts &&
|
if (gAudioIO->mDetectDropouts &&
|
||||||
(inputError || len < framesPerBuffer) ) {
|
(//inputError ||
|
||||||
|
len < framesPerBuffer) ) {
|
||||||
// Assume that any good partial buffer should be written leftmost
|
// Assume that any good partial buffer should be written leftmost
|
||||||
// and zeroes will be padded after; label the zeroes.
|
// and zeroes will be padded after; label the zeroes.
|
||||||
auto start = gAudioIO->mTime;
|
auto start = gAudioIO->mTime;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user