0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00

libobs: Delay stop detection of audio source

Delay the "audio stopped" detection by one audio tick to ensure that
audio doesn't get intentionally cut out in some situations
This commit is contained in:
jp9000 2017-03-27 09:01:13 -07:00
parent c422d84d6e
commit dc4e205008
2 changed files with 12 additions and 0 deletions

View File

@ -108,10 +108,20 @@ static bool discard_if_stopped(obs_source_t *source, size_t channels)
/* if perpetually pending data, it means the audio has stopped,
* so clear the audio data */
if (last_size == size) {
if (!source->pending_stop) {
source->pending_stop = true;
#if DEBUG_AUDIO == 1
blog(LOG_DEBUG, "doing pending stop trick: '%s'",
source->context.name);
#endif
return true;
}
for (size_t ch = 0; ch < channels; ch++)
circlebuf_pop_front(&source->audio_input_buf[ch], NULL,
source->audio_input_buf[ch].size);
source->pending_stop = false;
source->audio_ts = 0;
source->last_audio_input_buf_size = 0;
#if DEBUG_AUDIO == 1
@ -212,6 +222,7 @@ static inline void discard_audio(struct obs_core_audio *audio,
ts->end);
#endif
source->pending_stop = false;
source->audio_ts = ts->end;
}

View File

@ -562,6 +562,7 @@ struct obs_source {
/* audio */
bool audio_failed;
bool audio_pending;
bool pending_stop;
bool user_muted;
bool muted;
struct obs_source *next_audio_source;