void gst_dasf_sink_set_halted (GstDasfSink* self, gboolean halted) { GST_LOG (""); GstDasfSinkPrivate* priv = GST_DASF_SINK_GET_PRIVATE (self); GooComponent *component = NULL; GooComponent *pp = NULL; if(self->component != NULL) component = GOO_COMPONENT (self->component); if(self->pp != NULL) pp = GOO_COMPONENT (self->pp); if (halted) { if (component != NULL && component->cur_state == OMX_StateExecuting) goo_component_set_state_pause (component); if (pp != NULL && pp->cur_state == OMX_StateExecuting) goo_component_set_state_pause (pp); } else { if (pp != NULL && pp->cur_state == OMX_StatePause) goo_component_set_state_executing (pp); if (component != NULL && component->cur_state == OMX_StatePause) goo_component_set_state_executing (component); } }
static GstStateChangeReturn gst_goo_encpcm_state_change (GstElement* element, GstStateChange transition) { g_assert (GST_IS_GOO_ENCPCM (element)); GstGooEncPcm* self = GST_GOO_ENCPCM (element); GstStateChangeReturn ret; switch (transition) { case GST_STATE_CHANGE_READY_TO_PAUSED: GST_DEBUG_OBJECT (self, "GST_STATE_CHANGE_READY_TO_PAUSED"); self->rate = 0; self->channels = 0; self->ts = 0; self->outcount = 0; gst_goo_adapter_clear (self->adapter); break; default: break; } ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); switch (transition) { case GST_STATE_CHANGE_PLAYING_TO_PAUSED: GST_OBJECT_LOCK (self); goo_component_set_state_pause (self->component); GST_OBJECT_UNLOCK (self); break; case GST_STATE_CHANGE_PAUSED_TO_READY: break; case GST_STATE_CHANGE_READY_TO_NULL: omx_stop (self); break; default: break; } return ret; }
static GstStateChangeReturn gst_goo_encjpeg_change_state (GstElement* element, GstStateChange transition) { GST_LOG (""); GstGooEncJpeg* self = GST_GOO_ENCJPEG (element); GstStateChange result; g_assert (self->component != NULL); g_assert (self->inport != NULL); g_assert (self->outport != NULL); switch (transition) { case GST_STATE_CHANGE_NULL_TO_READY: break; case GST_STATE_CHANGE_READY_TO_PAUSED: { GstGooEncJpegPrivate* priv = GST_GOO_ENCJPEG_GET_PRIVATE (self); priv->num_input_buffers = NUM_INPUT_BUFFERS_DEFAULT; priv->num_output_buffers = NUM_OUTPUT_BUFFERS_DEFAULT; priv->incount = 0; priv->outcount = 0; priv->quality = QUALITY_DEFAULT; priv->colorformat = COLOR_FORMAT_DEFAULT; priv->width = WIDTH_DEFAULT; priv->height = HEIGHT_DEFAULT; priv->omxbufsiz = 0; break; } case GST_STATE_CHANGE_PAUSED_TO_PLAYING: GST_OBJECT_LOCK (self); if (goo_component_get_state (self->component) == OMX_StatePause) { goo_component_set_state_executing (self->component); } GST_OBJECT_UNLOCK (self); break; default: break; } result = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); switch (transition) { case GST_STATE_CHANGE_PLAYING_TO_PAUSED: GST_OBJECT_LOCK (self); goo_component_set_state_pause (self->component); GST_OBJECT_UNLOCK (self); break; case GST_STATE_CHANGE_PAUSED_TO_READY: if ( ! (goo_port_is_tunneled (self->inport)) ) { omx_stop (self); } break; case GST_STATE_CHANGE_READY_TO_NULL: break; default: break; } return result; }