@@ -194,7 +194,10 @@ static void asmd_capture(void* param, obs_source_t* sourceIn, const struct audio
194
194
195
195
source->fifoBuffer .setSize (numChannels, fifoSize);
196
196
197
- source->tempBuffer .resize (fifoSize, 0 .0f );
197
+ {
198
+ std::scoped_lock lock (asmd->captureCallbackMutex );
199
+ source->tempBuffer .resize (fifoSize, 0 .0f );
200
+ }
198
201
199
202
if (!(muted && source->postMute ))
200
203
{
@@ -233,8 +236,6 @@ static void asmd_capture(void* param, obs_source_t* sourceIn, const struct audio
233
236
}
234
237
}
235
238
236
- // TODO
237
- doThisCallback = false ;
238
239
if (!doThisCallback)
239
240
{
240
241
asmd->doRawCallback = true ;
@@ -260,10 +261,7 @@ static void asmd_capture(void* param, obs_source_t* sourceIn, const struct audio
260
261
261
262
auto numReady = source.fifoBuffer .getNumReady ();
262
263
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))
267
265
return ;
268
266
}
269
267
@@ -297,7 +295,7 @@ static void asmd_capture(void* param, obs_source_t* sourceIn, const struct audio
297
295
{
298
296
auto numReady = source.fifoBuffer .getNumReady ();
299
297
300
- if (numReady != frames)
298
+ if (numReady < frames || numReady > 2 * frames)
301
299
{
302
300
source.fifoBuffer .reset ();
303
301
0 commit comments