void gst_decklink_sink_finalize (GObject * object) { GstDecklinkSink *decklinksink; g_return_if_fail (GST_IS_DECKLINK_SINK (object)); decklinksink = GST_DECKLINK_SINK (object); /* clean up object here */ g_cond_free (decklinksink->cond); g_mutex_free (decklinksink->mutex); g_mutex_free (decklinksink->audio_mutex); delete decklinksink->callback; #ifdef _MSC_VER /* signal the COM thread that it should uninitialize COM */ if (decklinksink->comInitialized) { g_mutex_lock (decklinksink->com_deinit_lock); g_cond_signal (decklinksink->com_uninitialize); g_cond_wait (decklinksink->com_uninitialized, decklinksink->com_deinit_lock); g_mutex_unlock (decklinksink->com_deinit_lock); } g_mutex_free (decklinksink->com_init_lock); g_mutex_free (decklinksink->com_deinit_lock); g_cond_free (decklinksink->com_initialized); g_cond_free (decklinksink->com_uninitialize); g_cond_free (decklinksink->com_uninitialized); #endif /* _MSC_VER */ G_OBJECT_CLASS (parent_class)->finalize (object); }
void gst_decklink_sink_dispose (GObject * object) { g_return_if_fail (GST_IS_DECKLINK_SINK (object)); /* clean up as possible. may be called multiple times */ G_OBJECT_CLASS (parent_class)->dispose (object); }
void gst_decklink_sink_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { GstDecklinkSink *decklinksink; g_return_if_fail (GST_IS_DECKLINK_SINK (object)); decklinksink = GST_DECKLINK_SINK (object); switch (property_id) { case PROP_MODE: g_value_set_enum (value, decklinksink->mode); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } }
static GstStateChangeReturn gst_decklink_sink_change_state (GstElement * element, GstStateChange transition) { GstDecklinkSink *decklinksink; GstStateChangeReturn ret; g_return_val_if_fail (GST_IS_DECKLINK_SINK (element), GST_STATE_CHANGE_FAILURE); decklinksink = GST_DECKLINK_SINK (element); switch (transition) { case GST_STATE_CHANGE_NULL_TO_READY: if (!gst_decklink_sink_start (decklinksink)) { ret = GST_STATE_CHANGE_FAILURE; goto out; } break; case GST_STATE_CHANGE_READY_TO_PAUSED: break; case GST_STATE_CHANGE_PAUSED_TO_PLAYING: break; default: break; } ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); switch (transition) { case GST_STATE_CHANGE_PLAYING_TO_PAUSED: gst_decklink_sink_force_stop (decklinksink); break; case GST_STATE_CHANGE_PAUSED_TO_READY: break; case GST_STATE_CHANGE_READY_TO_NULL: gst_decklink_sink_stop (decklinksink); break; default: break; } out: return ret; }
void gst_decklink_sink_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { GstDecklinkSink *decklinksink; g_return_if_fail (GST_IS_DECKLINK_SINK (object)); decklinksink = GST_DECKLINK_SINK (object); switch (property_id) { case PROP_MODE: decklinksink->mode = (GstDecklinkModeEnum) g_value_get_enum (value); break; case PROP_DEVICE_NUMBER: decklinksink->device_number = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } }