提交 d2f2783b 编写于 作者: J jp9000

libobs: Always reset last audio buf size when it changes

This variable is used to detect whether audio has stopped -- if audio
stops, it detects that no new data is coming in, and resets the audio
position so that it eliminates the chance of causing the audio buffering
to go haywire if audio starts up again.  However, this variable was not
being reset every time the value changes, which it should.
上级 6407707a
......@@ -88,6 +88,7 @@ static void ignore_audio(obs_source_t *source, size_t channels,
circlebuf_pop_front(&source->audio_input_buf[ch], NULL,
source->audio_input_buf[ch].size);
source->last_audio_input_buf_size = 0;
source->audio_ts += (uint64_t)num_floats * 1000000000ULL /
(uint64_t)sample_rate;
}
......@@ -198,6 +199,8 @@ static inline void discard_audio(struct obs_core_audio *audio,
for (size_t ch = 0; ch < channels; ch++)
circlebuf_pop_front(&source->audio_input_buf[ch], NULL, size);
source->last_audio_input_buf_size = 0;
#if DEBUG_AUDIO == 1
if (is_audio_source)
blog(LOG_DEBUG, "audio discarded, new ts: %"PRIu64,
......
......@@ -985,6 +985,7 @@ static void reset_audio_data(obs_source_t *source, uint64_t os_time)
source->audio_input_buf[i].size);
}
source->last_audio_input_buf_size = 0;
source->audio_ts = os_time;
}
......@@ -1058,6 +1059,8 @@ static void source_output_audio_place(obs_source_t *source,
source->audio_input_buf[i].size -
(buf_placement + size));
}
source->last_audio_input_buf_size = 0;
}
static inline void source_output_audio_push_back(obs_source_t *source,
......@@ -1074,6 +1077,10 @@ static inline void source_output_audio_push_back(obs_source_t *source,
for (size_t i = 0; i < channels; i++)
circlebuf_push_back(&source->audio_input_buf[i],
in->data[i], size);
/* reset audio input buffer size to ensure that audio doesn't get
* perpetually cut */
source->last_audio_input_buf_size = 0;
}
static inline bool source_muted(obs_source_t *source, uint64_t os_time)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册