CoglPipeline * cogl_gst_video_sink_get_pipeline (CoglGstVideoSink *vt) { CoglGstVideoSinkPrivate *priv; g_return_val_if_fail (COGL_GST_IS_VIDEO_SINK (vt), NULL); priv = vt->priv; if (priv->pipeline == NULL) { priv->pipeline = cogl_pipeline_new (priv->ctx); cogl_gst_video_sink_setup_pipeline (vt, priv->pipeline); cogl_gst_video_sink_attach_frame (vt, priv->pipeline); priv->frame_dirty = FALSE; } else if (priv->frame_dirty) { CoglPipeline *pipeline = cogl_pipeline_copy (priv->pipeline); cogl_object_unref (priv->pipeline); priv->pipeline = pipeline; cogl_gst_video_sink_attach_frame (vt, pipeline); priv->frame_dirty = FALSE; } return priv->pipeline; }
static void set_up_pipeline (CoglGstVideoSink *sink, void *user_data) { Data *data = (Data *) user_data; if (data->pipeline) cogl_object_unref (data->pipeline); data->pipeline = cogl_pipeline_copy (data->base_pipeline); cogl_gst_video_sink_setup_pipeline (data->sink, data->pipeline); data->last_output_width = 0; data->last_output_height = 0; }