static GstStateChangeReturn ges_pipeline_change_state (GstElement * element, GstStateChange transition) { GESPipeline *self; GstStateChangeReturn ret; self = GES_PIPELINE (element); switch (transition) { case GST_STATE_CHANGE_READY_TO_PAUSED: if (G_UNLIKELY (self->priv->timeline == NULL)) { GST_ERROR_OBJECT (element, "No GESTimeline set on the pipeline, cannot play !"); ret = GST_STATE_CHANGE_FAILURE; goto done; } if (self->priv->mode & (GES_PIPELINE_MODE_RENDER | GES_PIPELINE_MODE_SMART_RENDER)) GST_DEBUG ("rendering => Updating pipeline caps"); /* Set caps on all tracks according to profile if present */ if (!ges_pipeline_update_caps (self)) { GST_ERROR_OBJECT (element, "Error setting the caps for rendering"); ret = GST_STATE_CHANGE_FAILURE; goto done; } _link_tracks (self); break; case GST_STATE_CHANGE_PAUSED_TO_READY: { GList *tmp; for (tmp = self->priv->not_rendered_tracks; tmp; tmp = tmp->next) gst_element_set_locked_state (tmp->data, FALSE); } break; default: break; } ret = GST_ELEMENT_CLASS (ges_pipeline_parent_class)->change_state (element, transition); switch (transition) { case GST_STATE_CHANGE_PAUSED_TO_READY: _unlink_tracks (self); break; default: break; } done: return ret; }
static GstStateChangeReturn ges_pipeline_change_state (GstElement * element, GstStateChange transition) { GESPipeline *self; GstStateChangeReturn ret; self = GES_PIPELINE (element); switch (transition) { case GST_STATE_CHANGE_READY_TO_PAUSED: if (G_UNLIKELY (self->priv->timeline == NULL)) { GST_ERROR_OBJECT (element, "No GESTimeline set on the pipeline, cannot play !"); ret = GST_STATE_CHANGE_FAILURE; goto done; } if (self->priv-> mode & (TIMELINE_MODE_RENDER | TIMELINE_MODE_SMART_RENDER)) GST_DEBUG ("rendering => Updating pipeline caps"); if (!ges_pipeline_update_caps (self)) { GST_ERROR_OBJECT (element, "Error setting the caps for rendering"); ret = GST_STATE_CHANGE_FAILURE; goto done; } /* Set caps on all tracks according to profile if present */ break; default: break; } ret = GST_ELEMENT_CLASS (ges_pipeline_parent_class)->change_state (element, transition); done: return ret; }