summaryrefslogtreecommitdiff
path: root/sys/decklink/gstdecklinkaudiosink.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sys/decklink/gstdecklinkaudiosink.cpp')
-rw-r--r--sys/decklink/gstdecklinkaudiosink.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/decklink/gstdecklinkaudiosink.cpp b/sys/decklink/gstdecklinkaudiosink.cpp
index 2906470ce..61ff6bbca 100644
--- a/sys/decklink/gstdecklinkaudiosink.cpp
+++ b/sys/decklink/gstdecklinkaudiosink.cpp
@@ -361,6 +361,10 @@ gst_decklink_audio_sink_ringbuffer_acquire (GstAudioRingBuffer * rb,
return FALSE;
}
+ g_mutex_lock (&self->output->lock);
+ self->output->audio_enabled = TRUE;
+ g_mutex_unlock (&self->output->lock);
+
ret =
self->output->
output->SetAudioCallback (new GStreamerAudioOutputCallback (self));
@@ -391,9 +395,13 @@ gst_decklink_audio_sink_ringbuffer_release (GstAudioRingBuffer * rb)
GST_DEBUG_OBJECT (self->sink, "Release");
- if (self->output)
- self->output->output->DisableAudioOutput ();
+ if (self->output) {
+ g_mutex_lock (&self->output->lock);
+ self->output->audio_enabled = FALSE;
+ g_mutex_unlock (&self->output->lock);
+ self->output->output->DisableAudioOutput ();
+ }
// free the buffer
g_free (rb->memory);
rb->memory = NULL;