static void gst_quarktv_finalize (GObject * object) { GstQuarkTV *filter = GST_QUARKTV (object); if (filter->planetable) { gst_quarktv_planetable_clear (filter); g_free (filter->planetable); filter->planetable = NULL; } G_OBJECT_CLASS (parent_class)->finalize (object); }
static gboolean gst_quarktv_start (GstBaseTransform * trans) { GstQuarkTV *filter = GST_QUARKTV (trans); if (filter->planetable) { gst_quarktv_planetable_clear (filter); g_free (filter->planetable); } filter->planetable = (GstBuffer **) g_malloc0 (filter->planes * sizeof (GstBuffer *)); return TRUE; }
static gboolean gst_quarktv_set_info (GstVideoFilter * vfilter, GstCaps * incaps, GstVideoInfo * in_info, GstCaps * outcaps, GstVideoInfo * out_info) { GstQuarkTV *filter = GST_QUARKTV (vfilter); gint width, height; width = GST_VIDEO_INFO_WIDTH (in_info); height = GST_VIDEO_INFO_HEIGHT (in_info); gst_quarktv_planetable_clear (filter); filter->area = width * height; return TRUE; }
static gboolean gst_quarktv_set_caps (GstBaseTransform * btrans, GstCaps * incaps, GstCaps * outcaps) { GstQuarkTV *filter = GST_QUARKTV (btrans); GstStructure *structure; gboolean ret = FALSE; structure = gst_caps_get_structure (incaps, 0); GST_OBJECT_LOCK (filter); if (gst_structure_get_int (structure, "width", &filter->width) && gst_structure_get_int (structure, "height", &filter->height)) { gst_quarktv_planetable_clear (filter); filter->area = filter->width * filter->height; ret = TRUE; } GST_OBJECT_UNLOCK (filter); return ret; }