Example #1
0
static guint
gst_dasf_clock_required (GstDasfSink* self)
{
	guint retvalue = 0;
	GooTiPostProcessor *peer_component = NULL;

	GooObject *video_decoder = GOO_OBJECT (gst_goo_util_find_goo_component (
		GST_ELEMENT (self), GOO_TYPE_TI_VIDEO_DECODER));

	if (video_decoder == NULL) video_decoder = GOO_OBJECT (
		gst_goo_util_find_goo_component (GST_ELEMENT (self),
		GOO_TYPE_TI_VIDEO_DECODER720P));

	if(video_decoder == NULL)
		goto done;

	GST_DEBUG_OBJECT (self, "Found a video decoder %s", GOO_OBJECT_NAME(GOO_OBJECT(video_decoder)));
	GstGooVideoFilter *gst_video_dec =  GST_GOO_VIDEO_FILTER(g_object_get_data(G_OBJECT(video_decoder), "gst"));

	peer_component = GOO_TI_POST_PROCESSOR (gst_goo_util_find_goo_component (GST_ELEMENT (gst_video_dec), GOO_TYPE_TI_POST_PROCESSOR));
	GST_INFO("peer_component=0x%08x", peer_component);
	if (peer_component == NULL)
		goto done;

	self->pp = peer_component;   // TODO we should probably ref and unref pp!!
	retvalue = 1;

done:
	return retvalue;
}
Example #2
0
static void
goo_ti_post_processor_set_parameters (GooComponent* component)
{
	g_assert (GOO_IS_TI_POST_PROCESSOR (component));
	GooTiPostProcessor* self = GOO_TI_POST_PROCESSOR (component);

	GooTiPostProcessorPriv* priv =
		GOO_TI_POST_PROCESSOR_GET_PRIVATE (self);

	goo_component_set_parameter_by_name (component, VIDEO_PIPELINE,
					     (OMX_PTR) &self->video_pipeline);


	_goo_ti_post_processor_set_ouput(self, priv->out_device);

	goo_component_set_parameter_by_name (component,
					     BACKGROUND_COLOR,
					     self->background_color);

	if (self->transcolor_key->bTransColorEnable != OMX_FALSE)
	{
		goo_component_set_parameter_by_name (component,
						     TRANSPARENCY_KEY,
						     self->transcolor_key);
	}

	/* Check if there is an OMX Clock existent */
	goo_ti_post_processor_set_clock (component);

	GOO_OBJECT_DEBUG (self, "");

	return;
}
Example #3
0
static void
goo_ti_post_processor_get_property (GObject* object, guint prop_id,
				     GValue* value, GParamSpec* spec)
{
	g_assert (GOO_IS_TI_POST_PROCESSOR (object));
	GooTiPostProcessor* self = GOO_TI_POST_PROCESSOR (object);
	GooTiPostProcessorPriv* priv =
		GOO_TI_POST_PROCESSOR_GET_PRIVATE (self);

	switch (prop_id)
	{
	case PROP_ROTATION:
		g_value_set_enum (value, priv->rotation);
		break;
	case PROP_OPACITY:
		g_value_set_uint (value, priv->opacity);
		break;
	case PROP_XSCALE:
		g_value_set_uint (value, priv->xscale);
		break;
	case PROP_YSCALE:
		g_value_set_uint (value, priv->yscale);
		break;
	case PROP_XPOS:
		g_value_set_uint (value, priv->xpos);
		break;
	case PROP_YPOS:
		g_value_set_uint (value, priv->ypos);
		break;
	case PROP_MIRROR:
		g_value_set_boolean (value, priv->mirror);
		break;
	case PROP_CROPLEFT:
		g_value_set_uint (value, priv->cropleft);
		break;
	case PROP_CROPTOP:
		g_value_set_uint (value, priv->croptop);
		break;
	case PROP_CROPWIDTH:
		g_value_set_uint (value, priv->cropwidth);
		break;
	case PROP_CROPHEIGHT:
		g_value_set_uint (value, priv->cropheight);
		break;
	case PROP_OUTPUT:
		g_value_set_enum (value, priv->output);
		break;
	default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, spec);
		break;
	}

	return;
}
Example #4
0
void
goo_ti_post_processor_set_starttime (GooComponent* component, gint64 time_start)
{
	g_assert (GOO_IS_TI_POST_PROCESSOR (component));
	GooTiPostProcessor* self = GOO_TI_POST_PROCESSOR (component);
	GOO_OBJECT_DEBUG (self, "Set start time by sync AV");
	GooTiComponentFactory *factory =
		GOO_TI_COMPONENT_FACTORY (
			goo_object_get_owner (GOO_OBJECT (component))
			);

	if (factory->clock != NULL)
	{
		GooComponent *clock = g_object_ref (factory->clock);
		goo_ti_clock_set_starttime (clock, time_start);
		g_object_unref (clock);
	}
	g_object_unref (factory);
}
Example #5
0
static void
goo_ti_post_processor_load_parameters (GooComponent* component)
{
	g_assert (GOO_IS_TI_POST_PROCESSOR (component));
	GooTiPostProcessor* self = GOO_TI_POST_PROCESSOR (component);

	self->background_color = g_new0 (POSTPROC_CUSTOM_BACKGROUNDCOLOR, 1);
	self->background_color->nOutputDev = 0;
	self->background_color->nColor = 0x000000;

	self->transcolor_key = g_new0 (POSTPROC_CUSTOM_TRANSCOLORKEYTYPE, 1);
	self->transcolor_key->nOutputDev = 0;
	self->transcolor_key->nKeyType = 1;
	self->transcolor_key->bTransColorEnable = OMX_FALSE;
	self->transcolor_key->nColor = 0x000000;

	self->video_pipeline = 1;

	GOO_OBJECT_DEBUG (self, "");
	return;
}
Example #6
0
static void
goo_ti_post_processor_finalize (GObject* object)
{
	g_assert (GOO_IS_TI_POST_PROCESSOR (object));
	GooTiPostProcessor* self = GOO_TI_POST_PROCESSOR (object);

	if (G_LIKELY (self->background_color))
	{
		g_free (self->background_color);
		self->background_color = NULL;
	}

	if (G_LIKELY (self->transcolor_key))
	{
		g_free (self->transcolor_key);
		self->transcolor_key = NULL;
	}

	(*G_OBJECT_CLASS (goo_ti_post_processor_parent_class)->finalize) (object);

	return;
}
Example #7
0
static void
goo_ti_post_processor_set_property (GObject* object, guint prop_id,
				    const GValue* value, GParamSpec* spec)
{
	g_assert (GOO_IS_TI_POST_PROCESSOR (object));
	GooTiPostProcessor* self = GOO_TI_POST_PROCESSOR (object);

	GooTiPostProcessorPriv* priv =
		GOO_TI_POST_PROCESSOR_GET_PRIVATE (self);

	switch (prop_id)
	{
	case PROP_ROTATION:
		_goo_ti_post_processor_set_rotation
			(self, g_value_get_enum (value));
		break;
	case PROP_OPACITY:
		_goo_ti_post_processor_set_opacity
			(self, g_value_get_uint (value));
		break;

	case PROP_XSCALE:
		_goo_ti_post_processor_set_xscale
			(self, g_value_get_uint (value));
		break;
	case PROP_YSCALE:
		_goo_ti_post_processor_set_yscale
			(self, g_value_get_uint (value));
		break;
	case PROP_XPOS:
		_goo_ti_post_processor_set_xpos
			(self, g_value_get_uint (value));
		break;
	case PROP_YPOS:
		_goo_ti_post_processor_set_ypos
			(self, g_value_get_uint (value));
		break;
	case PROP_MIRROR:
		_goo_ti_post_processor_set_mirror
			(self, g_value_get_boolean (value));
		break;
	case PROP_CROPTOP:
		_goo_ti_post_processor_set_crop_top
			(self, g_value_get_uint (value));
		break;
	case PROP_CROPLEFT:
		_goo_ti_post_processor_set_crop_left
			(self, g_value_get_uint (value));
		break;
	case PROP_CROPWIDTH:
		_goo_ti_post_processor_set_crop_width
			(self, g_value_get_uint (value));
		break;
	case PROP_CROPHEIGHT:
		_goo_ti_post_processor_set_crop_height
			(self, g_value_get_uint (value));
		break;
	case PROP_OUTPUT:
		priv->out_device = g_value_get_enum (value);
		break;
	default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, spec);
		break;
	}

	return;
}
Example #8
0
static void
goo_ti_post_processor_validate (GooComponent* component)
{
	g_assert (GOO_IS_TI_POST_PROCESSOR (component));
	GooTiPostProcessor* self = GOO_TI_POST_PROCESSOR (component);
	g_assert (component->cur_state == OMX_StateLoaded);

	/* params */
	{
		g_assert (self->video_pipeline >= 1 &&
			  self->video_pipeline <= 2);

		/* this is temporal */
		self->background_color->nOutputDev = 0;

		g_assert (self->background_color->nColor >= 0x000000 &&
			  self->background_color->nColor <= 0xffffff);

		/* this is temporal */
		self->transcolor_key->nOutputDev = 0;

		self->transcolor_key->nKeyType = 1;
		g_assert (self->transcolor_key->nColor >= 0x000000 &&
			  self->transcolor_key->nColor <= 0xffffff);

	}

	/* input */
	{
		GooIterator* iter =
		goo_component_iterate_input_ports (component);
		goo_iterator_nth (iter, 0);
		GooPort* port = GOO_PORT (goo_iterator_get_current (iter));
		g_assert (port != NULL);

		OMX_PARAM_PORTDEFINITIONTYPE* param;
		param = GOO_PORT_GET_DEFINITION (port);

		/* let's use the max available resolution. */
		ResolutionInfo rinfo = goo_get_resolution ("sxvga");
		g_assert ((param->format.video.nFrameWidth <= rinfo.width) &&
			  (param->format.video.nFrameHeight <= rinfo.height));

		param->format.video.cMIMEType = "video/x-raw-yuv";

		switch (param->format.video.eColorFormat)
		{
		case OMX_COLOR_FormatYUV420PackedPlanar:
			/* I420 */
			param->nBufferSize =
				param->format.video.nFrameWidth *
				param->format.video.nFrameHeight * 1.5;
		break;
		case OMX_COLOR_FormatYCbYCr:
			/* YUY2? */
		case OMX_COLOR_FormatCbYCrY:
			/* UYVY? */
		case OMX_COLOR_Format16bitRGB565:
			/* RGB */
			param->nBufferSize =
				param->format.video.nFrameWidth *
				param->format.video.nFrameHeight * 2;
			break;
		default:
			GOO_OBJECT_DEBUG (self, "Invalid color format");
			g_assert_not_reached ();
		}

		param->format.video.eCompressionFormat =
			OMX_VIDEO_CodingUnused;

		g_object_unref (iter);
		g_object_unref (port);
	}

	GOO_OBJECT_DEBUG (self, "");

	return;
}