Ejemplo n.º 1
0
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);
	}
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}