static IplImage * load_image (gchar * uri, gchar * dir, gchar * image_name, const gchar * name_variant) { IplImage *aux; aux = cvLoadImage (uri, CV_LOAD_IMAGE_UNCHANGED); if (aux == NULL) { if (is_valid_uri (uri)) { gchar *file_name; file_name = g_strconcat (dir, "/", image_name, name_variant, ".png", NULL); load_from_url (file_name, uri); aux = cvLoadImage (file_name, CV_LOAD_IMAGE_UNCHANGED); g_remove (file_name); g_free (file_name); } } return aux; }
static void kms_image_overlay_load_image_to_overlay (KmsImageOverlay * imageoverlay) { gchar *url = NULL; IplImage *costumeAux = NULL; gboolean fields_ok = TRUE; fields_ok = fields_ok && gst_structure_get (imageoverlay->priv->image_to_overlay, "offsetXPercent", G_TYPE_DOUBLE, &imageoverlay->priv->offsetXPercent, NULL); fields_ok = fields_ok && gst_structure_get (imageoverlay->priv->image_to_overlay, "offsetYPercent", G_TYPE_DOUBLE, &imageoverlay->priv->offsetYPercent, NULL); fields_ok = fields_ok && gst_structure_get (imageoverlay->priv->image_to_overlay, "widthPercent", G_TYPE_DOUBLE, &imageoverlay->priv->widthPercent, NULL); fields_ok = fields_ok && gst_structure_get (imageoverlay->priv->image_to_overlay, "heightPercent", G_TYPE_DOUBLE, &imageoverlay->priv->heightPercent, NULL); fields_ok = fields_ok && gst_structure_get (imageoverlay->priv->image_to_overlay, "url", G_TYPE_STRING, &url, NULL); if (!fields_ok) { GST_WARNING_OBJECT (imageoverlay, "Invalid image structure received"); goto end; } if (url == NULL) { GST_DEBUG ("Unset the image overlay"); goto end; } if (!imageoverlay->priv->dir_created) { gchar *d = g_strdup (TEMP_PATH); imageoverlay->priv->dir = g_mkdtemp (d); imageoverlay->priv->dir_created = TRUE; } costumeAux = cvLoadImage (url, CV_LOAD_IMAGE_UNCHANGED); if (costumeAux != NULL) { GST_DEBUG ("Image loaded from file"); goto end; } if (kms_image_overlay_is_valid_uri (url)) { gchar *file_name = g_strconcat (imageoverlay->priv->dir, "/image.png", NULL); load_from_url (file_name, url); costumeAux = cvLoadImage (file_name, CV_LOAD_IMAGE_UNCHANGED); g_remove (file_name); g_free (file_name); } if (costumeAux == NULL) { GST_DEBUG ("Image not loaded"); } else { GST_DEBUG ("Image loaded from URL"); } end: if (imageoverlay->priv->costume != NULL) { cvReleaseImage (&imageoverlay->priv->costume); imageoverlay->priv->costume = NULL; } if (costumeAux != NULL) { imageoverlay->priv->costume = costumeAux; } g_free (url); }