mirror of https://github.com/GNOME/gimp.git
Bug 773450 - Animated WEBP images should be able to set frame delay...
...in the export dialog Read back timestamps into layer names. Adds the exact duration to the layer names. Previously, they were not reloaded correctly.
This commit is contained in:
parent
4f9095798d
commit
5e6a1083fd
|
@ -158,7 +158,8 @@ load_image (const gchar *filename,
|
||||||
WebPAnimInfo anim_info;
|
WebPAnimInfo anim_info;
|
||||||
WebPAnimDecoderOptions dec_options;
|
WebPAnimDecoderOptions dec_options;
|
||||||
gint frame_num = 1;
|
gint frame_num = 1;
|
||||||
|
WebPDemuxer *demux = NULL;
|
||||||
|
WebPIterator iter = { 0, };
|
||||||
|
|
||||||
if (! WebPAnimDecoderOptionsInit (&dec_options))
|
if (! WebPAnimDecoderOptionsInit (&dec_options))
|
||||||
{
|
{
|
||||||
|
@ -166,6 +167,12 @@ load_image (const gchar *filename,
|
||||||
if (dec)
|
if (dec)
|
||||||
WebPAnimDecoderDelete (dec);
|
WebPAnimDecoderDelete (dec);
|
||||||
|
|
||||||
|
if (demux)
|
||||||
|
{
|
||||||
|
WebPDemuxReleaseIterator (&iter);
|
||||||
|
WebPDemuxDelete (demux);
|
||||||
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,6 +194,10 @@ load_image (const gchar *filename,
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
demux = WebPDemux (&wp_data);
|
||||||
|
if (! demux || ! WebPDemuxGetFrame (demux, 1, &iter))
|
||||||
|
goto error;
|
||||||
|
|
||||||
/* Attempt to decode the data as a WebP animation image */
|
/* Attempt to decode the data as a WebP animation image */
|
||||||
while (WebPAnimDecoderHasMoreFrames (dec))
|
while (WebPAnimDecoderHasMoreFrames (dec))
|
||||||
{
|
{
|
||||||
|
@ -202,14 +213,17 @@ load_image (const gchar *filename,
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
name = g_strdup_printf (_("Frame %d"), frame_num);
|
name = g_strdup_printf (_("Frame %d (%dms)"), frame_num, iter.duration);
|
||||||
create_layer (image_ID, outdata, 0, name, width, height);
|
create_layer (image_ID, outdata, 0, name, width, height);
|
||||||
g_free (name);
|
g_free (name);
|
||||||
|
|
||||||
frame_num++;
|
frame_num++;
|
||||||
|
WebPDemuxNextFrame (&iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
WebPAnimDecoderDelete (dec);
|
WebPAnimDecoderDelete (dec);
|
||||||
|
WebPDemuxReleaseIterator (&iter);
|
||||||
|
WebPDemuxDelete (demux);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Free the original compressed data */
|
/* Free the original compressed data */
|
||||||
|
|
Loading…
Reference in New Issue