timeline-pipeline: use standard GLib API to save thumbnail data to file

This commit is contained in:
Tim-Philipp Müller 2012-02-10 18:43:51 +00:00
parent c69ea5652d
commit 1b2bb14aab

View file

@ -265,8 +265,8 @@ ges_timeline_pipeline_change_state (GstElement * element,
ret = GST_STATE_CHANGE_FAILURE; ret = GST_STATE_CHANGE_FAILURE;
goto done; goto done;
} }
if (self-> if (self->priv->
priv->mode & (TIMELINE_MODE_RENDER | TIMELINE_MODE_SMART_RENDER)) mode & (TIMELINE_MODE_RENDER | TIMELINE_MODE_SMART_RENDER))
GST_DEBUG ("rendering => Updating pipeline caps"); GST_DEBUG ("rendering => Updating pipeline caps");
if (!ges_timeline_pipeline_update_caps (self)) { if (!ges_timeline_pipeline_update_caps (self)) {
GST_ERROR_OBJECT (element, "Error setting the caps for rendering"); GST_ERROR_OBJECT (element, "Error setting the caps for rendering");
@ -809,7 +809,7 @@ ges_timeline_pipeline_get_thumbnail (GESTimelinePipeline * self, GstCaps * caps)
* *
* Returns: %TRUE if the thumbnail was properly save, else %FALSE. * Returns: %TRUE if the thumbnail was properly save, else %FALSE.
*/ */
/* FIXME 0.11: save_thumbnail should have a GError parameter */
gboolean gboolean
ges_timeline_pipeline_save_thumbnail (GESTimelinePipeline * self, int width, int ges_timeline_pipeline_save_thumbnail (GESTimelinePipeline * self, int width, int
height, const gchar * format, const gchar * location) height, const gchar * format, const gchar * location)
@ -817,7 +817,6 @@ ges_timeline_pipeline_save_thumbnail (GESTimelinePipeline * self, int width, int
GstMapInfo map_info; GstMapInfo map_info;
GstBuffer *b; GstBuffer *b;
GstSample *sample; GstSample *sample;
FILE *fp;
GstCaps *caps; GstCaps *caps;
gboolean res = TRUE; gboolean res = TRUE;
@ -836,12 +835,14 @@ ges_timeline_pipeline_save_thumbnail (GESTimelinePipeline * self, int width, int
b = gst_sample_get_buffer (sample); b = gst_sample_get_buffer (sample);
if (gst_buffer_map (b, &map_info, GST_MAP_READ)) { if (gst_buffer_map (b, &map_info, GST_MAP_READ)) {
/* FIXME : Use standard glib methods */ GError *err = NULL;
fp = fopen (location, "w+");
if (!fwrite (map_info.data, map_info.size, 1, fp) || ferror (fp)) { if (!g_file_set_contents (location, (const char *) map_info.data,
map_info.size, &err)) {
GST_WARNING ("Could not save thumbnail: %s", err->message);
g_error_free (err);
res = FALSE; res = FALSE;
} }
fclose (fp);
} }
gst_caps_unref (caps); gst_caps_unref (caps);