static gboolean gst_decklink_audio_sink_ringbuffer_close_device (GstAudioRingBuffer * rb) { GstDecklinkAudioSinkRingBuffer *self = GST_DECKLINK_AUDIO_SINK_RING_BUFFER_CAST (rb); GST_DEBUG_OBJECT (self->sink, "Close device"); if (self->output) { gst_decklink_output_set_audio_clock (self->output, NULL); gst_decklink_release_nth_output (self->sink->device_number, GST_ELEMENT_CAST (self), TRUE); self->output = NULL; } return TRUE; }
static gboolean gst_decklink_video_sink_close (GstBaseSink * bsink) { GstDecklinkVideoSink *self = GST_DECKLINK_VIDEO_SINK_CAST (bsink); GST_DEBUG_OBJECT (self, "Closing"); if (self->output) { g_mutex_lock (&self->output->lock); self->output->mode = NULL; self->output->video_enabled = FALSE; if (self->output->start_scheduled_playback) self->output->start_scheduled_playback (self->output->videosink); g_mutex_unlock (&self->output->lock); self->output->output->DisableVideoOutput (); gst_decklink_release_nth_output (self->device_number, GST_ELEMENT_CAST (self), FALSE); self->output = NULL; } return TRUE; }