@@ -194,7 +194,10 @@ static void asmd_capture(void* param, obs_source_t* sourceIn, const struct audio
194194
195195 source->fifoBuffer .setSize (numChannels, fifoSize);
196196
197- source->tempBuffer .resize (fifoSize, 0 .0f );
197+ {
198+ std::scoped_lock lock (asmd->captureCallbackMutex );
199+ source->tempBuffer .resize (fifoSize, 0 .0f );
200+ }
198201
199202 if (!(muted && source->postMute ))
200203 {
@@ -233,8 +236,6 @@ static void asmd_capture(void* param, obs_source_t* sourceIn, const struct audio
233236 }
234237 }
235238
236- // TODO
237- doThisCallback = false ;
238239 if (!doThisCallback)
239240 {
240241 asmd->doRawCallback = true ;
@@ -260,10 +261,7 @@ static void asmd_capture(void* param, obs_source_t* sourceIn, const struct audio
260261
261262 auto numReady = source.fifoBuffer .getNumReady ();
262263
263- if (numReady < frames && source.isActive .load (std::memory_order_acquire))
264- // if (numReady < frames)
265- // if (numReady < frames &&
266- // audio_data->timestamp - source.last_callback_time < 2.0 * frames / sampleRate * 1000000000)
264+ if (numReady < 2 * frames && source.isActive .load (std::memory_order_acquire))
267265 return ;
268266 }
269267
@@ -297,7 +295,7 @@ static void asmd_capture(void* param, obs_source_t* sourceIn, const struct audio
297295 {
298296 auto numReady = source.fifoBuffer .getNumReady ();
299297
300- if (numReady != frames)
298+ if (numReady < frames || numReady > 2 * frames)
301299 {
302300 source.fifoBuffer .reset ();
303301
0 commit comments