1
0
Эх сурвалжийг харах

libobs: Add use of pause callbacks to CoreAudio monitoring

Sergo 2 жил өмнө
parent
commit
e4a3f80f9f

+ 13 - 0
libobs/audio-monitoring/osx/coreaudio-output.c

@@ -54,6 +54,15 @@ static inline bool fill_buffer(struct audio_monitor *monitor)
 	return true;
 }
 
+static void on_audio_pause(void *data, calldata_t *calldata)
+{
+	UNUSED_PARAMETER(calldata);
+	struct audio_monitor *monitor = data;
+	pthread_mutex_lock(&monitor->mutex);
+	circlebuf_free(&monitor->new_data);
+	pthread_mutex_unlock(&monitor->mutex);
+}
+
 static void on_audio_playback(void *param, obs_source_t *source,
 			      const struct audio_data *audio_data, bool muted)
 {
@@ -261,6 +270,8 @@ static void audio_monitor_free(struct audio_monitor *monitor)
 	if (monitor->source) {
 		obs_source_remove_audio_capture_callback(
 			monitor->source, on_audio_playback, monitor);
+		obs_source_remove_audio_pause_callback(monitor->source,
+						       on_audio_pause, monitor);
 	}
 	if (monitor->active) {
 		AudioQueueStop(monitor->queue, true);
@@ -288,6 +299,8 @@ static void audio_monitor_init_final(struct audio_monitor *monitor)
 
 	obs_source_add_audio_capture_callback(monitor->source,
 					      on_audio_playback, monitor);
+	obs_source_add_audio_pause_callback(monitor->source, on_audio_pause,
+					    monitor);
 }
 
 struct audio_monitor *audio_monitor_create(obs_source_t *source)